Как я могу установить атрибут для определенных столбцов из результатов SQLAlchemy? - PullRequest
0 голосов
/ 03 октября 2018

Я использую Python-колбу, sqlalchemy.У меня была проблема с результатами sqlalchemy.Я хочу получить конкретные результаты столбцов из своей таблицы, поэтому я попробовал это

query = session.query(Table.column_one, Table.coulmn_two).first()

, поэтому у меня были результаты, но я не могу обновить эти результаты.Я пробовал вот так

query.column_one = value

или

setattr(query, column_one, value)

, но результаты таковы:

AttributeError: can't set attribute

, поэтому я нашел этот пост Невозможно установить атрибутдля объектов результата в фляге SQLAlchemy и в этом посте нет способа установить атрибут из этого запроса.Это правда?Нет ли пути?

1 Ответ

0 голосов
/ 03 октября 2018

Есть много методов!

Метод # 1:

Вам нужно получить весь объект, чтобы обновить его

Попробуйте это:

query = session.query(Table).first()
query.column_one = value # setattr(query, column_one, value)
session.commit()

Метод № 2:

Использование SQLAlchemy Core API

from sqlalchemy import update

stmt = update(Table).where(Table.c.id==5).values(id=1)

Подробнее об этом методе в по этой ссылке

Существуют и другие методы, упомянутые Илья Эверила в комментариях , так что ему заслужили похвалу, подними его комментарий!

Метод № 3:

load_only() метод, он может быть использован следующим образом:

from sqlalchemy.orm import load_only

query = session.query(Table).options(load_only("column_one", "column_two"))
query.column_one = Value
session.commit()

Подробнее о load_only() метод наэто ссылка

Метод № 4:

Query.update()

session.query(Table).filter(Table.column_one == 25).update({Table.column_one: 10}, synchronize_session=False)
session.commit()

Подробнее о Query.update() здесь !

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