【发布时间】:2018-11-02 00:52:16
【问题描述】:
我正在编写一个 python 脚本来处理一些 csv 数据并将其放入我通过 sqlalchemy 访问的 sqlite db。
目前的计算分为两部分。第二部分取决于数据库中已经存在的第一部分的结果。从头开始重写脚本确实解决了这种依赖关系会很痛苦,我想避免它。
def part_one():
# does stuff
session.commit()
def part_two():
# does stuff, including querying part_one's results
# sometimes this function fails and rollbacks
session.commit()
如果part_two 失败,我想回滚part_two 和part_one。
由于part_two 依赖于数据库中存在的数据,我想我不得不在part_one 中提交。否则我显然可以重用同一个会话并完全回滚。
我试图搞砸session.begin_nested,但没有得到任何结果。有没有办法实现我想要做的事情?我需要能够 session.query 反对未提交的更改(这似乎不可能)或回滚以前成功提交的事务。
【问题讨论】:
标签: python sqlite sqlalchemy