SQLAlchemy MySQL ON DUPLICATE KEY UPDATE - PullRequest
       8

SQLAlchemy MySQL ON DUPLICATE KEY UPDATE

1 голос
/ 30 сентября 2019

Я пытаюсь использовать функцию SQLALchemy MySQL ON_DUPLICATE_KEY_UPDATE (), но она работает не так, как ожидалось.

from sqlalchemy.dialects.mysql.dml import Insert 

new_record={'id': 'val1', 'col1': 'new val'}

# Here id is the primary key
# my_table is a Table object
Insert(my_table).on_duplicate_key_update(new_record)

Этот код работает без выдачи ошибки, но существует запись в таблице с первичным ключом. значение 'val1' не обновляется.

Я изучил документацию SQLAlchemy о обновлении дубликатов ключа , но не могу понять, как вызвать функцию.

1 Ответ

0 голосов
/ 01 октября 2019

Первое, что нужно отметить, это то, что вы только создали и удалили объект оператора вставки. Чтобы выполнить его, вы должны передать его одному из execute() методов SQLAlchemy. В операторе также отсутствуют значения для первой попытки и вставки.

from sqlalchemy.dialects.mysql.dml import Insert 

new_record = {'id': 'val1', 'col1': 'new val'}

# Here id is the primary key
# my_table is a Table object
stmt = Insert(my_table).values(new_record)
stmt = stmt.on_duplicate_key_update(col1=stmt.inserted.col1)

# This will actually execute the statement
engine.execute(stmt)
...