首页 > 解决方案 > 重复键更新上的 SQLAlchemy MySQL

问题描述

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

标签: pythonmysqlsqlalchemyon-duplicate-key

解决方案


首先要注意的是,您只创建并丢弃了一个插入语句对象。为了执行它,您必须将它传递给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)

推荐阅读