繁体   English   中英

批量插入 SQLAlchemy ORM 并返回主键

[英]Bulk insert with SQLAlchemy ORM and return primary keys

我正在尝试使用bulk_save_objectsbulk_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM