使用 bulk_save_objects 获取插入的主键 ID

el_*_*_le 3 flask-sqlalchemy

使用后如何获取插入的 ID(生成的主键)session.bulk_save_objects?

我试过这个:

for x in y:
  obj = Post(...)
  obj_list.append(obj)

session.bulk_save_objects(obj_list)
session.commit()

for i in obj_list:
  print(i.id)
Run Code Online (Sandbox Code Playgroud)

id 是 None。行已成功插入。

小智 5

您需要添加return_defaults = True如下所示的 bulk_save_object 方法以获取记录的主键

for x in y:
   obj = Post(...)
   obj_list.append(obj)
session.bulk_save_objects(obj_list,return_defaults = True)
session.commit()

for i in obj_list:
   print(i.id)
Run Code Online (Sandbox Code Playgroud)

  • 我不推荐这种方法,因为“return_defaults”会导致您的语句一次插入一个,从而大大降低性能并违背“bulk_save_objects”语句的目的。 (7认同)
  • @MathisHard 这是一个很好的评论,但你在回复中遗漏了一些重要的东西:你建议如何做。 (6认同)