在Flask中使用SQLAlchemy,我想使用键值对字典来修改表中的一行,并且键对应于列名。我很困惑为什么我使用setattr()而不是self .__ dict__时代码成功更新表。以下代码更新了我的表,其中args是字典。
for key,val in args.items():
if val:
setattr(obj, key, val)
db.session.commit()
但是,这失败了:
for key,val in args.items():
if val:
obj.__dict__[key]= val
db.session.commit()
我可以看到在两种情况下都使用Python修改了对象,但是在第二种情况下,数据库未更新。