sqlalchemy使用on_duplicate_key_update在尝试插入重复键的数据时更新记录
sqlalchemy使用on_duplicate_key_update在尝试插入重复键的数据时更新记录
在SQLAlchemy
中,在尝试插入重复键的数据时更新记录,可以使用on_duplicate_key_update
方法。这个方法是在SQLAlchemy 1.4
版本中引入的,它允许你定义在发生键重复时,哪些列应该被更新。
以下是一个使用on_duplicate_key_update
的例子:
from sqlalchemy import create_engine, Table, MetaData, Column, Integer, String
from sqlalchemy.dialects.mysql import insert
# 假设我们有一个名为 'users' 的表,它有两列:'id' 和 'name'
engine = create_engine('mysql+pymysql://user:password@localhost/dbname')
metadata = MetaData()
users = Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(50)))
# 创建一个插入请求
stmt = insert(users).values(id=1, name='John Doe')
# 如果 'id' 已存在,则更新 'name' 列
stmt = stmt.on_duplicate_key_update(name='John Doe')
with engine.connect() as connection:
connection.execute(stmt)
在这个例子中,如果users
表中已经有一个id
值为1
的记录,尝试插入新的记录时会导致键重复错误。使用on_duplicate_key_update
方法后,如果发生键重复,则只会更新name
列为'John Doe'
。