我正在寻找一种“标准”的方法来修改给定表中的一行(我想修改行中的几个值。)
我找到了很多方法,我很难理解这个选择的影响。
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更新一行的所有不同方法对性能有什么影响?