我想从Python在Sqlite3中执行一个脚本,如果它没有完全成功,我希望回滚整个脚本。这可能吗?
这是我尝试过的:
sql = open('my_file').read()
try:
conn.executescript(sql)
conn.commit()
except sqlite3.OperationalError as oe:
print('Failure to execute {0}: {1}'.format(f, oe))
conn.rollback()
exit(1)
但这不起作用。抛出错误时,commit
不会被调用,因为它会转到except
块。尽管如此,脚本的部分工作仍然存在于数据库中。