【发布时间】:2021-04-17 15:52:47
【问题描述】:
我正在开发基于 Docker 映像的 Flask 中的 Web 应用程序。一张图片存储 Postgres 数据库。我正在努力将None 插入到以下定义的整数列中:
release = db.Column(db.Integer, nullable=True)
行初始化:
def __init__(self, name: str, env: str, mode: ExecutionMode, status: ExecutionStatus, date: datetime, user_id: int,
release_id: int):
self.execution_name = name
self.environment = env
self.execution_mode = mode
self.execution_status = status
self.execution_date = date
self.user_id = user_id
self.release = release_id
db.session.add(self)
db.session.commit()
调用者的方法:
if request.method == "POST":
execution = Execution(name=data['result']['name'], env=Environment[data['result']['env']],
mode=ExecutionMode[data['result']['mode']],
status=ExecutionStatus[data['result']['status']],
date=datetime.datetime.strptime(data['result']['date'], "%Y-%m-%d %H:%M:%S.%f"),
user_id=current_user.id,
release_id=(data['result']['release'] if data['result'][
'release'] != "null" else sqlalchemy.null()))
每当遇到Release的值为None的情况,就会触发如下异常:
sqlalchemy.exc.DataError: (psycopg2.errors.InvalidTextRepresentation) invalid input syntax for type integer: "None"
有谁知道,如何将None 和NULL 值分别插入到数据库中?
感谢您的帮助。
【问题讨论】:
-
是
None对象还是字符串"None"?错误提示后者。 -
您好,我已经澄清了问题的描述。要回答您的问题,它是
None对象,但似乎 SQLAlchemy 本身将其转换为str,因此是"None"。 -
@michal.kyjovsky 你确定吗?我可以用
str(None)重现错误消息,但不能用None对象重现错误消息。 -
是的,我确定。问题实际上出在接受数据的表单的前端。选择框中应该有“null”的值,但是选择了“None”。我错过了。看来,问题解决了。
标签: python flask sqlalchemy flask-sqlalchemy