【问题标题】:Why does SQLAlchemy boolean column fail with "TypeError: an integer is required, found str"为什么 SQLAlchemy 布尔列因“TypeError:需要一个整数,找到 str”而失败
【发布时间】:2016-06-29 05:36:25
【问题描述】:

这是您自己的问题的答案,以帮助其他可能遇到此错误的人。

我使用 Python 中的 SQLite3 并使用 SQLAlchemy 通过 ORM 加载我的对象。我有一列指定为:

the_column = sqlalchemy.Column(sqlalchemy.Boolean, nullable=False, default=False)

我已通过以下方式手动将 boolean 列添加到我的表中:

ALTER TABLE Users ADD the_column INTEGER DEFAULT FALSE NOT NULL;

然而,当我运行应用程序时,我得到了错误:

TypeError:需要一个整数,找到 str。或者类似的东西。

这是怎么回事?

【问题讨论】:

    标签: python sqlite sqlalchemy


    【解决方案1】:

    原来问题出在默认值上。 SQLAlchemy 中的布尔值映射到数据库中的整数(我确实创建了正确类型的列),但 FALSE 的默认值没有通过 DDL 命令转换为整数值 0。

    解决方法是这样创建列:

    ALTER TABLE Users ADD the_column INTEGER DEFAULT 0 NOT NULL;
    

    【讨论】:

      猜你喜欢
      • 2012-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多