【问题标题】:sqlalchemy.exc.DataError: (psycopg2.errors.InvalidTextRepresentation) invalid input syntax for type integer: "None"sqlalchemy.exc.DataError:(psycopg2.errors.InvalidTextRepresentation)整数类型的无效输入语法:“无”
【发布时间】: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"

有谁知道,如何将NoneNULL 值分别插入到数据库中?

感谢您的帮助。

【问题讨论】:

  • None对象还是字符串"None"?错误提示后者。
  • 您好,我已经澄清了问题的描述。要回答您的问题,它是 None 对象,但似乎 SQLAlchemy 本身将其转换为 str,因此是 "None"
  • @michal.kyjovsky 你确定吗?我可以用str(None) 重现错误消息,但不能用None 对象重现错误消息。
  • 是的,我确定。问题实际上出在接受数据的表单的前端。选择框中应该有“null”的值,但是选择了“None”。我错过了。看来,问题解决了。

标签: python flask sqlalchemy flask-sqlalchemy


【解决方案1】:

问题实际上出在接受数据的表单的前端。选择框中应该有“null”的值;但是,“无”是选择的值。我错过了。看来问题已经解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-14
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多