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

更新单行的不同方法之间的差异

  •  0
  • cglacet  · 技术社区  · 5 年前

    我正在寻找一种“标准”的方法来修改给定表中的一行(我想修改行中的几个值。)

    我找到了很多方法,我很难理解这个选择的影响。 This answer

    SQLAlchemy似乎是一个很好的工具,所以我猜没有几种方法仅仅作为一个设计结果,每个解决方案都必须有一个好处/成本。我在找这个信息,但到处都找不到。

    user_id . 例如,我可以写以下两个语句(在外观上)具有相同的效果:

    profile = {'display_name': 'test', 'age': 34} 
    
    # 1)
    user_profile = query.get(user_id)
    for key, value in profile.items():
        setattr(user_profile, key, value)
    database.session.add(user_profile)
    
    # 2)
    user_profile = query.filter_by(id=user_id)
    user_profile.update({**profile})
    
    # 3)
    with database.engine.connect() as conn:
        stmt = (
            sqlalchemy.update(models.UserProfile)
                      .values(**profile)
                      .where(models.UserProfile.id == db_user_id)
        )
        conn.execute(stmt)
    

    一般来说,使用SQLAlchemy更新一行的所有不同方法对性能有什么影响?

    0 回复  |  直到 5 年前