gpt4 book ai didi

python - 是否可以在 mysqldb 中执行多次插入后获取所有 lastrowids?

转载 作者:太空狗 更新时间:2023-10-29 18:06:49 26 4
gpt4 key购买 nike

我不确定生成的id是否是连续生成的,如果不是,有没有其他方法可以获取它们?

class BaseDao(object):

def __init__(self,pooldb):
self.pooldb = pooldb

def insertmany(self,sql,args):
conn,cur = None,None
try:
conn = pooldb.dedicated_connection()
cur = conn.cursor()
num=cur.executemany(sql,args)
if num <= 0:
raise Exception("insert failure with num equals zero")
lastrowid = int(cur.lastrowid)
return [range(lastrowid - num + 1,lastrowid+1)]
except:
conn.rollback()
traceback.print_exc()
raise Exception("error happened when insert sql=%s args=%s " % (sql,str(args)))
finally:
if cur:
cur.close()
if conn:
conn.close()

最佳答案

每次 mysqldb 执行涉及自动增量列的查询时,最后的插入 ID 将丢失,除非您在下一个 execute() 之前读取它,而使用 executemany() 您将无法做到这一点。

您必须将上面的代码更改为:

num = 0
insert_ids = []

for arg in args:
num += cur.execute(sql, arg)
insert_ids.append(cur.lastrowid)

由于 Python 模块实际上是 MySQL API 之上的一个薄层,这里是对 mysql_insert_id() 的一些了解。功能有效。

关于python - 是否可以在 mysqldb 中执行多次插入后获取所有 lastrowids?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9817134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com