【问题标题】:struck at sqlalchemy.exc.IntegrityError: (IntegrityError) constraint failed 'INSERT INTO users击中 sqlalchemy.exc.IntegrityError: (IntegrityError) 约束失败 'INSERT INTO users
【发布时间】:2013-11-11 02:46:03
【问题描述】:

我正在使用 sqlite 数据库,并且我在这个要点中声明了模型

https://gist.github.com/mmahesh/7245561

我添加了一个带有事务管理器的模型实例

with transaction.manager:
    model = Users(username='example',name='Example', email_primary='m@m.com', _password='example')
    DBSession.add(model)

每当我执行 initialize_sample_db development.ini 时,就会出现此错误

sqlalchemy.exc.IntegrityError: (IntegrityError) constraint failed 'INSERT INTO users (name, username, email_primary, email_secondary, _password, bio) VALUES (?, ?, ?, ?, ?, ?)' ('Example', 'example', 'm@m.com', None, 'example', None )

附加信息: 当我使用 sqlite3 命令工具并在“.d”命令之后我得到 ​​p>

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
COMMIT;

提前致谢

【问题讨论】:

    标签: sqlite sqlalchemy pyramid


    【解决方案1】:

    在表 users 中,您已将列 id 定义为主键。 但是,在您的 INSERT 声明中,您没有提供 id

    如果 id 是自动增量列,那将完全没问题 - 但它不是。

    解决方案是将sqlite_autoincrement=True 添加到您的users 表定义中。

    此外,您的users 表定义似乎过于严格——您要求大多数字段不可为空。这取决于您的任务,但有时过于严格可能是个坏主意 - 如果您忘记(或根本不想)填写其中一个字段,也会导致违反约束。

    【讨论】:

    • 就我个人而言,我喜欢从强约束开始,并在真正需要时删除它们;
    猜你喜欢
    • 2021-06-29
    • 1970-01-01
    • 2022-08-10
    • 2021-08-07
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    相关资源
    最近更新 更多