Sqlite 在sqlalchemy.exc.IntegrityError:(IntegrityError)约束失败';插入到用户中
我使用的是sqlite数据库,我在本文中声明了模型 我添加了一个带有事务管理器的模型实例Sqlite 在sqlalchemy.exc.IntegrityError:(IntegrityError)约束失败';插入到用户中,sqlite,sqlalchemy,pyramid,Sqlite,Sqlalchemy,Pyramid,我使用的是sqlite数据库,我在本文中声明了模型 我添加了一个带有事务管理器的模型实例 with transaction.manager: model = Users(username='example',name='Example', email_primary='m@m.com', _password='example') DBSession.add(model) 每当我执行initialize_sample_db development.ini时,就会出现此错误 sq
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;
提前感谢在表
users
中,您已将列id
定义为主键。
但是,在INSERT
语句中,您没有提供id
如果id
是自动递增列,那就完全可以了,但事实并非如此
解决方案是添加到用户
表定义中
此外,您的
用户
表定义似乎过于严格-您要求大多数字段不可为空。这取决于您的任务,但有时过于严格可能是个坏主意-如果您忘记(或根本不想)填写其中一个字段,也会导致违反约束。我个人喜欢从强约束开始,并在真正必要时删除它们;