Flask-SQLAlchemy 更新(update) 数据,还有必要 db.session.add(foo) 吗?

2020-08-12 14:33:34 +08:00
 miniyao

有些案例中,update 数据对象时,会 加一行 db.session.add(foo),有些不加。不清楚哪种才是规范操作?

def edit():
    user = User.query.get(5)
    user.name = 'New Name'
    db.session.add(user)
    db.session.commit()
def edit():
    user = User.query.get(5)
    user.name = 'New Name'
    db.session.commit()
3972 次点击
所在节点    Python
7 条回复
hushao
2020-08-12 14:40:13 +08:00
加不加都可以,add 操作已有记录会更新
knightdf
2020-08-12 14:46:05 +08:00
update 不用加,直接 db.session.commit()
6d6f33
2020-08-12 15:58:27 +08:00
当然是显式声明是最好的。就是加 add 。
kayseen
2020-08-12 16:19:56 +08:00
一条更新我也是加的, 如果是更新多条数据, 分别 add, 然后一次 commit
CRVV
2020-08-12 16:23:51 +08:00
https://docs.sqlalchemy.org/en/13/orm/tutorial.html#adding-and-updating-objects

文档里写得很清楚,不用 add
add 的作用是 adding object,updating object 不用 add
miniyao
2020-08-12 16:49:54 +08:00
@CRVV 狗书的作者,光头大叔的 flask 教程里是有加的:

github.com/miguelgrinberg/flasky/blob/master/app/main/views.py

功能上没区别,作用可能就是 #3 楼说的语义上明显吧。
loading
2020-08-12 16:57:08 +08:00
无脑最后 commit

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/697683

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX