【发布时间】:2015-04-29 04:04:10
【问题描述】:
我正在优化我的代码,并减少查询量。这些曾经是一个循环,但我正在尝试重组我的代码来完成这样的工作。如何让第二个查询工作,以便它使用在每行的第一个查询中输入的 id。假设数据集的顺序也正确。
self.c.executemany("INSERT INTO nodes (node_value, node_group) values (?, (SELECT node_group FROM nodes WHERE node_id = ?)+1)", new_values)
#my problem is here
new_id = self.c.lastrowid
connection_values.append((node_id, new_id))
#insert entry
self.c.executemany("INSERT INTO connections (parent, child, strength) VALUES (?,?,1)", connection_values)
这些查询曾经是一个 for 循环,但耗时太长,所以我试图避免使用 for 循环并单独执行查询。我相信他们可能是将其组合到一个查询中的一种方式,但我不确定如何做到这一点。
【问题讨论】:
-
你的意思是像
insert into table_1 (x) values (y); set @last_id = last_insert_id(); insert into table_2 ( z ) values ( @last_id );这样的东西吗? -
没错,但是executemany只允许运行我刚刚发现的一条语句
标签: python sql sqlite python-3.x