我正在使用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;
提前致谢
答案 0 :(得分:4)
在表users
中,您已将列id
定义为主键。
但是,在INSERT
声明中,您未提供id
。
如果id
是自动增量列,那将完全没问题 - 但事实并非如此。
解决方案是将sqlite_autoincrement=True
添加到您的users
表定义中。
此外,您的users
表定义似乎过于严格 - 您需要大多数字段不可为空。这取决于你的任务,但有时太严格可能是个坏主意 - 如果你忘记(或根本不想)填写其中一个字段,它也会导致约束违规。