5

我正在使用 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;

提前致谢

4

1 回答 1

5

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

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

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

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

于 2013-10-31T07:46:34.983 回答