2012-04-13 43 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

相关问题