使用SQLAlchemy ORM批量插入并返回主键

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

pwlsiynice 回答:使用SQLAlchemy ORM批量插入并返回主键

docs

  

给定的对象不会添加到会话中,并且不会在其上建立任何其他状态,除非还设置了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()
本文链接:https://www.f2er.com/3141883.html

大家都在问