我正在使用 python 模块 MySQLDb 一次插入多个条目(有时最多 300 个)。我的 sql 看起来像...
INSERT INTO MyTable (row2,row3) values
(row2_entry1,row3_entry1),(row2_entry2,row3_entry2),........(row2_entry300,row3_entry300)
此表的主键是自动递增的。我想要的是输入到表中的条目的主键列表。我如何用批次做到这一点
MySQLLAST_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()]