代码之家  ›  专栏  ›  技术社区  ›  Matt

SQLAlchemy添加与add_all

  •  2
  • Matt  · 技术社区  · 4 年前

    我在想什么时候用 session.add 何时使用 session.add_all 使用SQLAlchemy。

    具体来说,我不明白使用 add_all 它可以做任何事情 add 可以做到,那么为什么不总是使用它呢?SQLalchemy中没有提到这一点 documentation .

    0 回复  |  直到 4 年前
        1
  •  5
  •   Donal    4 年前

    如果您只有一条新记录要添加,请使用 sqlalchemy.orm.session.Session.add() 但如果你有多条记录,那么使用 sqlalchemy.orm.session.Session.add_all() 除了第一种方法的API用于单个实例而第二种方法用于多个实例之外,实际上没有显著差异。这有很大的区别吗?不,只是为了方便。

        2
  •  1
  •   marcel h    3 年前

    我也在想,正如其他人提到的,没有真正的区别。但是,我想补充一点,使用 add 在循环中,而不是使用 add_all 允许您在异常处理方面更加细粒度。将映射的类实例列表传递给 add_all 例如,如果这些对象中的一个违反了约束(例如,唯一性),将导致所有实例的回滚。我更喜欢将数据逻辑与服务逻辑解耦,并通过从数据层返回实例来决定如何处理未存储在服务层中的实例。但是,我认为这取决于您如何处理异常。