簡體   English   中英

如何在MySQL Python中進行upsert(更新和插入)查詢?

[英]How can I do upsert (update and insert) query in MySQL Python?

我正在尋找一個簡單的upsert(更新/插入)。

我有要在其中插入書表行的表,但是下次當我要插入行時,我不想再次為該表插入數據,只是想用必需的列更新(如果不存在則退出),然后創建新行。

如何在Mysql-python中執行此操作?

cursor.execute("""INSERT INTO books (book_code,book_name,created_at,updated_at) VALUES (%s,%s,%s,%s)""", (book_code,book_name,curr_time,curr_time,))

MySQL具有REPLACE語句:

REPLACE工作原理與INSERT完全相同,不同之處在於,如果表中的舊行與PRIMARY KEYUNIQUE索引的新行具有相同的值,則在插入新行之前刪除該舊行。

cursor.execute("""
    REPLACE INTO books (book_code,book_name,created_at,updated_at)
    VALUES (%s,%s,%s,%s)""",
    (book_code,book_name,curr_time,curr_time,)
)

更新根據@ Yo-han的評論, REPLACE就像DELETEINSERT ,而不是UPSERT 這是使用INSERT ... ON DUPLICATE KEY UPDATE的替代方法:

cursor.execute("""
    INSERT INTO books (book_code,book_name,created_at,updated_at)
    VALUES (%s,%s,%s,%s)
    ON DUPLICATE KEY UPDATE book_name=%s, created_at=%s, updated_at=%s
""", (book_code, book_name, curr_time, curr_time, book_name, curr_time, curr_time))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM