使用session.bulk_save_objects
后如何获取插入的ID(生成的主键)?
我尝试过:
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)
id为None。这些行已成功插入。
答案 0 :(得分:1)
您需要在bulk_save_object方法中添加return_defaults = True
,如下所示以获取记录的主键
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)
答案 1 :(得分:0)
执行此操作而不是使用bulk_save_objects
(每个值都发出插入语句)的更有效的方法是将from sqlalchemy.dialects.postgresql.insert
与返回子句一起使用。
insert_stmt = insert(Table).values(dictionary_mappings).returning(Table.id)
ids = db.session.execute(insert_stmt).fetchall()