#sqlalchemy
#sqlalchemy
Вопрос:
Я новичок в SQLAlchemy, и мне любопытно, как я мог бы выполнить следующее UPDATE
.
Я использую язык выражений SQL, и моя версия SQLAlchemy 1.3.16
. Я написал запрос, который возвращает [после некоторой фильтрации и тому подобного] следующие два столбца более крупной таблицы, которую я вызову my_table
.
-------------- -----
|team_member_id|id |
-------------- -----
|3738 |7172 |
|2752 |1016 |
|3738 |7173 |
|3738 |7174 |
|3738 |7175 |
|3738 |7176 |
|3738 |7178 |
|3738 |7177 |
|140 |6679 |
|3568 |7221 |
|3568 |7220 |
...
Есть третий столбец ( final_col
) my_table
, который я хотел бы обновить на основе этих двух столбцов.
В принципе, для каждой (team_member_id, id)
пары выше я хотел бы установить значение строки final_col
team_member_id
равным значению. id
остается прежним; это просто первичный ключ.
Как бы я это сделал?
Ответ №1:
Я нашел однажды возможное решение в виде bindparam
.
update_executed_by = my_table.update().where(my_table.c.id == bindparam('_id')).values(
final_col=bindparam('_team_member_id'))
bound_params = [{'_team_member_id': row[0], '_id': row[1]} for row in session.execute(get_team_members)]
session.execute(update_executed_by, bound_params)