python - 使用 SQLAlchemy ORM 批量插入并返回主键
问题描述
bulk_save_objects
我正在尝试使用or将字典列表插入表中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]
解决方案
文档_
给定的对象不会添加到会话中,并且不会在它们上建立其他状态,除非还设置了 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()
推荐阅读
- string - 通过 multi regexp_substr 连接一个 col
- c# - 抛出 NullReferenceException 时,C# 调试器将错误的字段名称报告为 null
- php - 如何自动使“wp_set_script_translations”功能工作?
- angular - 如何使用 Angular 创建 sql 语法自动完成
- python - 根据特定文本从文件中获取数据 - Python
- android - 无法解析 androidx.drawerlayout:drawerlayout:1.0.0
- python - 如何从列表的索引值中减去最小值?
- c - OpenGLESv2 中 glColor4f 的等价物是什么?
- python - DataFrameGroupBy.transform 的内置方法是什么?
- safe-browsing - 为什么浏览器通过安全浏览阻止特定 URL,但安全浏览 API 不说 URL 是危险的?