[英]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 KEY
或UNIQUE
索引的新行具有相同的值,則在插入新行之前刪除該舊行。
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
就像DELETE
和INSERT
,而不是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.