如何在flask中创建独立事务(或单独的会话)以在db

时间:2019-07-18 03:55:36

标签: python database flask sqlalchemy flask-sqlalchemy

我正在尝试在API调用正在进行时在flask应用程序中记录语句。我想直接将语句记录到DB。问题是我到处都有数据库会话提交和回滚。我想记录与API调用会话无关的语句

例如

new_log = Log()
db.session.add(new_log)
...
if some logic:
   db.session.rollback()
else:
   db.session.commit()

在上面的代码中,我希望无论“某些逻辑”如何都提交new_log

我已经尝试过(看来我成功了),使用我的主应用程序文件中创建了一个单独的数据库会话

db = SQLAlchemy(app)
logger_db = SQLAlchemy(app)

现在我的代码看起来像

new_log = Log()
logger_db.session.add(new_log)
logger_db.session.commit()
...
if some logic:
   db.session.rollback()
else:
   db.session.commit()

这似乎有效。但是我想知道是否还有其他更好的解决方案。另外,如果有人指出无法解决该问题的情况,那就太好了。

P.S .:我将在应用程序的任何地方使用日志记录,因此我也担心性能。我也知道我也可以登录文件,但是现在,我只想坚持使用db方法

0 个答案:

没有答案