在sqlalchemy.exc.IntegrityError :( IntegrityError)约束失败'INSERT INTO用户

时间:2013-10-31 07:35:27

标签: sqlite sqlalchemy pyramid

我正在使用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'命令之后我得到

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
COMMIT;

提前致谢

1 个答案:

答案 0 :(得分:4)

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

如果id是自动增量列,那将完全没问题 - 但事实并非如此。

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

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