5

当我运行一个使用 Flask-SQLAlchemy 的 Flask 应用程序时,似乎 Flask-SQLAlchemy 正在举行一个会话,并且当我在 MySQL 客户端中发出 MySQL 命令(如 alter table add column)时,这些命令在我退出之前无法执行烧瓶应用程序。

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

4

1 回答 1

9

您可能想看看这个问题SQL Alchemy 关系加载器在表上留下锁?

您需要做的是子类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)
于 2012-09-14T02:25:20.657 回答