gpt4 book ai didi

python - SQLAlchemy中,dict更新方法如何与ORM交互?

转载 作者:太空狗 更新时间:2023-10-30 00:43:54 24 4
gpt4 key购买 nike

所以我有一个带有 JSON 列的 SQLAlchemy 表:

from sqlalchemy.dialects.postgresql import JSON
class MyTable(db.Model):
id = db.Column(db.Integer, primary_key=True)
my_json_column = db.Column(JSON)

然后我尝试使用 dict#update 方法更新列,如下所示:

def foo(my_object, new_params):
my_object.my_json_column.update(new_params)
db.session.commit()

然而,这并没有奏效。编辑:我的意思是,更新没有持久保存到数据库中。

什么起作用了,是这样的:

def foo(my_object, new_params):
temp_params = my_object.my_json_column.copy()
temp_params.update(new_params)
my_object.my_json_column = new_params
db.session.commit()

我怀疑它与“不变性”有关,或者 ORM 只注意到直接赋值或其他方面的变化。有谁知 Prop 体原因吗?

最佳答案

是的。默认情况下,SQLAlchemy 不会跟踪 inside dict 属性的更改。要使其跟踪更改,您可以使用 mutable扩展名:

class MyTable(db.Model):
...
my_json_column = db.Column(MutableDict.as_mutable(JSON))

关于python - SQLAlchemy中,dict更新方法如何与ORM交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36298077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com