使用Flask-SQLAlchemy的Flask应用程序运行时,如何在同一个数据库上同时使用MySQL客户端?

时间:2012-09-12 08:44:10

标签: mysql flask flask-sqlalchemy

当我运行使用Flask-SQLAlchemy的Flask应用程序时,似乎Flask-SQLAlchemy正在进行会话,当我在MySQL客户端终端中发出MySQL命令(如alter table add column)时,命令无法执行直到我退出Flask应用程序。

有没有人有类似的经历?如何在不中断Flask应用程序的情况下在MySQL客户端上发出命令?

1 个答案:

答案 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)