@detcelfer

Как не выгружать из БД все поля записи, чтобы произвести обновление значения в одной колонке?

в настоящее время используется следующая конструкция в коде:
user = db.session.query(User).filter_by(secret_key=args['secret_key']).with_for_update().first()
...
if user.smth == true:
    ...
...
user.balance = user.balance - cost
db.session.commit()


таблица User содержит в себе 30 полей и вся эта информация выгружается в user, но при этом в самом коде используются только буквально 2-3поля, а обновляется вообще только одно.

Если бы не необходимость произвоть коммит для изменения баланса пользователя писал бы так:
db.session.query(User.smth, User.smth2, User.smth3).filter_by(secret_key=args['secret_key']).with_for_update().first()

но такой запрос возвращает мне tuple и не даёт возможности делать измения в БД.
Есть ли способ не выдергивать все 30 полей из пользователя чтобы сделать изменения в одной конкретной колонке?
Как правильно это сделать используя SQLAlchemy ORM?
  • Вопрос задан
  • 38 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы