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

Mah*_*esh 5 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)
Run Code Online (Sandbox Code Playgroud)

每当我执行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 )
Run Code Online (Sandbox Code Playgroud)

附加信息:当我使用sqlite3命令工具并且在'.d'命令之后我得到

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
COMMIT;
Run Code Online (Sandbox Code Playgroud)

提前致谢

mvp*_*mvp 5

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

如果id是自动增量列,那将是完全可以的,但事实并非如此。

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

另外,您的users表定义似乎太严格了-您要求大多数字段不可为空。这取决于您的任务,但是有时过于严格可能不是一个好主意-如果您忘记(或根本不想)填写这些字段之一,也会导致约束冲突。