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

hll*_*lau 5 mysql flask flask-sqlalchemy

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

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

Sea*_*ira 8

你可能想看看这个问题SQL Alchemy Relationship loader会在桌子上留下一个锁吗?

您需要做的是子类化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)
Run Code Online (Sandbox Code Playgroud)