2012-04-13 72 views
1

我正在使用python模塊MySQLDb一次插入多個條目(有時高達300)。我的SQL看起來像...插入多個條目後獲取主鍵列表

INSERT INTO MyTable (row2,row3) values 
(row2_entry1,row3_entry1),(row2_entry2,row3_entry2),........(row2_entry300,row3_entry300) 

此表的主鍵是自動遞增的。我想要的是輸入到表中的條目的主鍵列表。我如何用批處理執行此操作

+0

你可以做一個事務,並使用'LAST_INSERT_ID()'獲得該標識' – hjpotter92 2012-04-13 14:48:51

回答

0

MySQL的LAST_INSERT_ID()只返回單個值。在批量插入的情況下,它將返回第一個插入行的主鍵值。

您可以使用GUID令牌來跟蹤作爲批量插入操作一部分的行。在表格中添加額外的varchar(32)列,名稱爲batch_insert_id。在進行批量插入時,請使用已知的GUID值。插入後,執行選擇查詢以獲取插入行的主鍵。

import uuid 

batch_insert_id = uuid.uuid4().hex 
# Execute your batch insert query, with batch_insert_id 
# as value of batch_insert_id for all rows 
cursor.execute("SELECT id FROM mytable WHERE batch_insert_id = '%s'", (batch_insert_id,)) 
primary_keys = [row[0] for row in cursor.fetchall()] 
+0

一個聰明的解決方法。我不確定我是否會被允許這樣做,但我會給你正確的答案,因爲你的解決方案會起作用。謝謝您的幫助。 – b10hazard 2012-04-17 19:11:27

相關問題