MySQL: обновление нескольких столбцов в одной таблице из временной таблицы с использованием sqlalchemy - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь использовать sqlalchemy обновить существующую таблицу с помощью временной таблицы.Я пробовал 2 способа.

Один способ, который я пробовал, это Обновление таблицы из другой таблицы с несколькими столбцами в sqlalchemy .

select_query = select([temp_table.c.Deletion,temp_table.c.CreatedDate]).where(and_(table._table__.c.ID == temp_table.c.ID,table.__table__.c.Seq == temp_table.c.Seq))

session.execute(table.__table__.update().values(Deletion=select_query.with_only_columns(temp_table.c.Deletion),CostCtrCode=select_query.with_only_columns(temp_table.c.CostCtrCode))
>>>'NotImplementedError: Operator 'getitem' is not supported on this expression'.

Другой способ - SQLAlchemy Correlated Update с несколькими столбцами?

select_query = select([temp_table.c.Deletion,temp_table.c.CreatedDate]).where(and_(table._table__.c.ID == temp_table.c.ID,table.__table__.c.Seq == temp_table.c.Seq))

session.execute(table.__table__.update().values({tuple_(table.__table__.c.Deletion,table.__table__.c.CreatedDate).self_group(): select_query}))

>>>sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError)
("You have an error in your SQL syntax; check the manual that corresponds to your 
MySQL server version for the right syntax to use near '(`Deletion`, `CreatedDate`'
at line 1") [SQL: 'UPDATE `XXX` SET (`Deletion`, `CreatedDate`)=(SELECT `XXX_Temp`.   
`Deletion`, `XXX_Temp`.`CreatedDate` \nWHERE `XXX`.`ID` = `XXX_Temp`.`ID` AND `XXX`.
`Seq` = `XXX_Temp`.`Seq` )']

Как решить эту проблему

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