使用setattr()与self进行烧瓶SQLAlchemy更新.__ dict__

时间:2019-11-03 20:04:56

标签: python flask sqlalchemy flask-sqlalchemy

在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修改了对象,但是在第二种情况下,数据库未更新。

0 个答案:

没有答案