sqlalchemy 事务中出错没有进行回滚?

2021-12-14 16:35:12 +08:00
 IurNusRay
with engine.begin() as connection:
正常执行
connection.execute(first_sql)

此句报异常
connection.execute(second_sql)


如上的代码,second_sql 故意设置了 sql 语法错误,但是 first_sql 执行的修改没有回滚,是哪里用的不对吗
1887 次点击
所在节点    Python
5 条回复
seven123
2021-12-14 17:10:30 +08:00
需要 connection.execute("rollback;")
IurNusRay
2021-12-14 17:36:01 +08:00
@seven123 也是无效的,刚刚好像发现原因了,我是执行的表结构修改的 sql ,如果是执行数据插入 /删除之类的 sql ,是会正常回滚的
abersheeran
2021-12-15 09:58:54 +08:00
哈哈哈感谢,我又多一个理由不支持 MySQL 了。PostgreSQL 支持表修改的回滚
joApioVVx4M4X6Rf
2021-12-15 13:36:38 +08:00
我说的呢,pg alter 表的时候需要 session.commit()才能成功,mysql 直接成功都不需要 commit ,刚开始还以为是自己脚本写错了,原来是这么回事,感谢楼主,学到了
todd7zhang
2021-12-15 13:56:08 +08:00
看样子是我狭隘了,一直没了解过这个。这种情况下居然不支持回滚...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/822160

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX