gpt4 book ai didi

python - 插入中的 sqlalchemy 回滚

转载 作者:行者123 更新时间:2023-11-28 17:49:23 26 4
gpt4 key购买 nike

我有一个小问题。我正在将一长串数据插入到数据库中,但某些新行可能会抛出 IntegrityError 异常。很好,我可以很容易地认出他们。问题是,当我回滚以撤消此“假”插入时,所有先前的行也被删除。

然后我想做的是回滚到最近的状态并继续下一个 Insert。

import sqlalchemy as alc

def insert(self, specs):
#do stuff to transfor specs in data_db

entry = Check_Point(data_db)
session.add(entry)

try:
session.flush()

except alc.exc.IntegrityError:
print 'int Error'
session.rollback()

所以,稍微研究一下,我发现了这个:

http://docs.sqlalchemy.org/en/rel_0_7/orm/session.html#using-savepoint

for record in records:
try:
with session.begin_nested():
session.merge(record)
except:
print "Skipped record %s" % record
session.commit()

但如果“records”是要插入的对象数组(在我的例子中是 Check_Point 的实例),我无法真正让它工作。我收到以下错误:

This Session's transaction has been rolled back by a nested rollback() call. To begin a new transaction, issue Session.rollback() first

我即将解决问题,但需要一些帮助。

提前致谢!

最佳答案

目前,由于 PySQLite 错误,SAVEPOINT 事务无法与 SQLAlchemySQLite3 一起正常工作。参见 this SQLAlchemy Google group post Michael Bayer 详细解释了该错误以及在 SQLAlchemy 中解决该错误的复杂性。

关于python - 插入中的 sqlalchemy 回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13072436/

26 4 0