当我运行使用Flask-SQLAlchemy的Flask应用程序时,似乎Flask-SQLAlchemy正在进行会话,当我在MySQL客户端终端中发出MySQL命令(如alter table add column)时,命令无法执行直到我退出Flask应用程序。
有没有人有类似的经历?如何在不中断Flask应用程序的情况下在MySQL客户端上发出命令?
答案 0 :(得分:8)
您可能需要查看此问题SQL Alchemy Relationship loader leaves a lock on table?
您需要做的是子类flask.ext.sqlalchemy.SQLAlchemy
并覆盖apply_driver_hacks
方法以传递其他关键字参数isolation_level='READ <some level>'
:
from flask.ext.sqlalchemy import SQLAlchemy
class UnLockedAlchemy(SQLAlchemy):
def apply_driver_hacks(self, app, info, options):
if not "isolation_level" in options:
options["isolation_level"] = "READ COMMITTED" # For example
return super(UnLockedAlchemy, self).apply_driver_hacks(app, info, options)