2
如果我想撤消在SQLAlchemy會話中使用session.execute(my_update_sql)
語句執行的先前更新語句,我該如何解決這個問題?如何在SQLAlchemy會話中恢復/撤消`session.execute()`語句
我使用的SQLAlchemy,Zope的一個金字塔的Web應用程序
如果我想撤消在SQLAlchemy會話中使用session.execute(my_update_sql)
語句執行的先前更新語句,我該如何解決這個問題?如何在SQLAlchemy會話中恢復/撤消`session.execute()`語句
我使用的SQLAlchemy,Zope的一個金字塔的Web應用程序
,只要您使用與交易「真正的」 DBMS,你應該可以回滾當前事務,就像你與其他操作做涉及session
:
session.execute('DELETE FROM users') # feel the thrill!
session.rollback()
的SQLAlchemy的典型設置與金字塔涉及ZopeTransactionExtension,它的會話管理金字塔的請求 - 響應週期的集成。在這種情況下,回滾,你需要在使用中興通訊的事務管理器做交易:
import transaction
transaction.rollback()
注意,回滾事務將撤銷在事務中所做的所有更改,不只是你session.execute()
聲明。如果你只想「撤銷」一條語句,你可以嘗試使用SQLAlchemy的nested transactions,支持取決於你正在使用的DBMS,
你爲什麼要這麼做?你的用例是什麼? – matino
如果'session.execute'沒有提交,那麼你可以'session.rollback' – adarsh
雖然'session.execute'總是提交,是不是這種情況? – matino