фляга-sqlalchemy: данные не обновляются - PullRequest
0 голосов
/ 25 июня 2018

Я использую SQLAlchemy с MySQL в сочетании с Flask API.Мы используем модели для запросов и создаем и обновляем изменения с помощью db.session.add () и db.session.commit ().

Мы также выполняем параллельную обработку данных - это бесконечное времяцикл, который запрашивает базу данных при каждом запуске (Model.query.filter_by (...). all ()) - однако мы получаем только те данные, которые были в базе данных ранее, а не обновленные данные - сами данные уже находятся вбаза данных.Если мы перезапустим приложение, новые данные будут найдены.

БД создается с помощью db = SQLAlchemy (app), а затем импортируется и используется в моделях

class Model(db.Model):
    name = db.Column(db.String(255), index=True, unique=True)
    active = db.Column(db.Boolean)

    def create(self):
        db.session.add(self)
        db.session.commit()

    def update(self):
        db.session.commit()


def run_update():
    while True:

        models = Model.query.filter_by(active=True).all()
        for model in models:
            do_something(model)
            time.sleep(300)

def do_something():
    longtask = threading.Thread(target=long_task)
    longtask.start()


def long_task():
    // Update database here again
    // Task has finished before it is run again.
    time.sleep(10)

Если новая записьсоздается, результат сохраняется только в запросе модели после перезапуска приложения.

Я уже пытался заменить запросы Model.query на db.session.query (Model), но это не изменило результат.

Заранее спасибо,

1 Ответ

0 голосов
/ 27 июня 2018

Я добавил db.session.close () в конце цикла while - теперь данные перезагружаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...