我正在尝试使用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'
的现有记录不会被更新。
我查看了有关on duplicate key update的SQLAlchemy文档,但无法理解如何调用该函数。
答案 0 :(得分:0)
首先要注意的是,您仅创建并丢弃了一个insert语句对象。为了执行它,您必须将其传递给SQLAlchemy的execute()
方法之一。该语句还缺少首先尝试插入的值。
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)