sqlalchemy使用on_duplicate_key_update在尝试插入重复键的数据时更新记录

作者 : admin 本文共811个字,预计阅读时间需要3分钟 发布时间: 2024-06-15 共1人阅读

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'

本站无任何商业行为
个人在线分享 » sqlalchemy使用on_duplicate_key_update在尝试插入重复键的数据时更新记录
E-->