Python 为什么在一个失败的命令之后,使用peewee ORM和posgresql为所有后续命令获取peewee.InternalError?
我已经与peewee和postgresql广泛合作了几个月。突然,这种情况开始发生。如果我运行任何查询命令并得到一个错误,那么所有后续命令开始返回Python 为什么在一个失败的命令之后,使用peewee ORM和posgresql为所有后续命令获取peewee.InternalError?,python,postgresql,peewee,Python,Postgresql,Peewee,我已经与peewee和postgresql广泛合作了几个月。突然,这种情况开始发生。如果我运行任何查询命令并得到一个错误,那么所有后续命令开始返回peewee.InternalError:当前事务被中止,在事务块结束之前忽略命令 我以为这种行为是从我将peewee从3.5.2升级到3.7.2时开始的,但后来我降级了,这种行为还在继续。这肯定不是经常发生 在最简单的情况下,我有一个只有一条记录的数据库表。我尝试创建一个具有相同id的新记录,得到了预期的IntegrityError。然后,如果我尝试
peewee.InternalError:当前事务被中止,在事务块结束之前忽略命令
我以为这种行为是从我将peewee从3.5.2升级到3.7.2时开始的,但后来我降级了,这种行为还在继续。这肯定不是经常发生
在最简单的情况下,我有一个只有一条记录的数据库表。我尝试创建一个具有相同id的新记录,得到了预期的IntegrityError
。然后,如果我尝试在该数据库上运行任何其他查询命令,我会得到如上所述的InternalError
这不会发生在sqlite数据库中
我已经重新安装了peewee和psycopg2,但没有效果
我缺少什么?尝试在数据库类中设置自动回滚=True
。你可以跟着我
您的问题在中已经知道了。虽然使用自动回滚是可以的,但是显式管理事务要好得多,这样在可能发生完整性错误的地方,您就可以捕获错误并显式回滚。例如,如果您有一个用户注册页面,并且用户名上有一个唯一的约束,您可以将其包装为try/except,并在失败时回滚。谢谢!我不知道我怎么还没有遇到那个问题。天哪。你的回答救了我的命!