如何在 flask-sqlalchemy 中避免 Raw SQL 中的 ROLLBACK 语句
How to avoid ROLLBACK statement in Raw SQL in flask-sqlalchemy
我正在尝试通过 sqlalchemy 在 postgresql 中发送 NOTIFY。这是代码的一部分:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
db.engine.execute("NOTIFY DHCP")
生成以下 SQL 代码:
2016-11-29 14:58:41 +05 [20571-16] postgres@server LOG: statement: BEGIN
2016-11-29 14:58:41 +05 [20571-17] postgres@server LOG: statement: NOTIFY DHCP
2016-11-29 14:58:41 +05 [20571-18] postgres@server LOG: statement: ROLLBACK
为什么我的代码中有 ROLLBACK 语句,如何更改为 COMMIT 语句?
你会想做:
db.session.execute("...")
db.session.commit()
这是我能找到的最佳解决方案:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
connection = db.engine.connect()
transaction = connection.begin()
try:
connection.execute("NOTIFY DHCP")
transaction.commit()
except:
transaction.rollback()
我正在尝试通过 sqlalchemy 在 postgresql 中发送 NOTIFY。这是代码的一部分:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
db.engine.execute("NOTIFY DHCP")
生成以下 SQL 代码:
2016-11-29 14:58:41 +05 [20571-16] postgres@server LOG: statement: BEGIN
2016-11-29 14:58:41 +05 [20571-17] postgres@server LOG: statement: NOTIFY DHCP
2016-11-29 14:58:41 +05 [20571-18] postgres@server LOG: statement: ROLLBACK
为什么我的代码中有 ROLLBACK 语句,如何更改为 COMMIT 语句?
你会想做:
db.session.execute("...")
db.session.commit()
这是我能找到的最佳解决方案:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
connection = db.engine.connect()
transaction = connection.begin()
try:
connection.execute("NOTIFY DHCP")
transaction.commit()
except:
transaction.rollback()