[英]Bulk insert with SQLAlchemy ORM and return primary keys
我正在尝试使用bulk_save_objects
或bulk_insert_mappings
将字典列表插入表中。 有什么方法可以获取每个条目的主键对象列表?
try:
cycle_object_list = []
for cycle in cycle_list:
period = Period()
for k, v in cycle.items():
setattr(period, k, v)
cycle_object_list.append(period)
db.session.bulk_save_objects(cycle_object_list)
db.session.commit()
print(cycle_object_list)
except Exception:
db.session.rollback()
raise
finally:
db.session.close()
我期待类似[Period.49, Period.50, Period.51]
但实际结果是 [Period.None, Period.None, Period.None]
给定的对象不会添加到 session 并且不会在它们上建立额外的 state,除非还设置了 return_defaults 标志,在这种情况下,将填充主键属性和服务器端默认值。
所以这可能有效:
try:
cycle_object_list = []
for cycle in cycle_list:
period = Period()
for k, v in cycle.items():
setattr(period, k, v)
cycle_object_list.append(period)
db.session.bulk_save_objects(cycle_object_list, return_defaults=True)
db.session.commit()
print(cycle_object_list)
except Exception:
db.session.rollback()
raise
finally:
db.session.close()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.