我正在尝试使用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文档,但无法理解如何调用该函数。

最佳答案

首先要注意的是,您仅创建并丢弃了一个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)

关于python - SQLAlchemy MySQL在重复键更新上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58159995/

10-11 04:56
查看更多