Когда запущено приложение Flask с Flask-SQLAlchemy, как мне одновременно использовать клиент MySQL в той же базе данных?

Когда я запускаю приложение Flask, использующее Flask-SQLAlchemy, кажется, что Flask-SQLAlchemy удерживает сеанс, и когда я запускаю команду MySQL, например, изменить столбец добавления таблицы, в клиентском терминале MySQL, команды не могут быть выполнены, пока я не выйду приложение «Фласк».

Есть ли у кого-нибудь подобный опыт? Как я могу выполнять команды на клиенте MySQL, не прерывая приложение Flask?


person hllau    schedule 12.09.2012    source источник


Ответы (1)


Вы можете посмотреть на этот вопрос загрузчик отношений 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)
person Sean Vieira    schedule 14.09.2012