如何还原/撤消SQLAlchemy中的`session.execute()`语句

如何还原/撤消SQLAlchemy中的`session.execute()`语句,sqlalchemy,pyramid,zope,Sqlalchemy,Pyramid,Zope,如果我想撤消以前在SQLAlchemy会话上使用session.execute(my\u update\u sql)语句执行的update语句,我该怎么做 我在金字塔web应用程序中使用SQLAlchemy,Zope如果您对事务使用“真实”DBMS,您应该能够回滚当前事务,就像您对涉及会话的其他操作所做的那样: session.execute('DELETE FROM users') # feel the thrill! session.rollback() SQLAlchemy与Pyram

如果我想撤消以前在SQLAlchemy会话上使用
session.execute(my\u update\u sql)
语句执行的update语句,我该怎么做

我在金字塔web应用程序中使用SQLAlchemy,Zope

如果您对事务使用“真实”DBMS,您应该能够回滚当前事务,就像您对涉及会话的其他操作所做的那样:

session.execute('DELETE FROM users')  # feel the thrill!
session.rollback()
SQLAlchemy与Pyramid的典型设置涉及ZopeTransactionExtension,它将会话管理与Pyramid的请求-响应周期集成在一起。在这种情况下,要回滚事务,您需要使用中兴通讯的事务管理器:

import transaction
transaction.rollback()

请注意,回滚事务将撤消事务中所做的所有更改,而不仅仅是您的
会话.execute()
语句。如果您只想“撤消”一条语句,那么可以尝试使用SQLAlchemy,它的支持取决于您使用的DBMS,

为什么您需要它?你的用例是什么?如果
session.execute
没有提交,那么你可以
session.rollback
I尽管
session.execute
总是提交,不是吗?