gpt4 book ai didi

python - SQLAlchemy,JSONB字段没有删除状态的历史记录

转载 作者:太空宇宙 更新时间:2023-11-03 14:43:32 25 4
gpt4 key购买 nike

例如我有一个模型:

class AttributeValue(db.Model):
id = Column(Integer, primary_key=True)
value = Column(JSONB(), nullable=False)
attribute_id = Column(Integer, ForeignKey("attributes.id"), nullable=False)
...

__tablename__ = 'attribute_value'

并且数据库中有该表的记录。如果我更改某些记录的 attribute_id 并尝试获取该记录的 attribute_id 字段的 History 对象,那么我将得到类似的内容

History(added=[2], unchanged=(), deleted=[1])

如果我更改并尝试获取此字段的历史对象,那么我将得到类似的内容

History(added=[{u'keywords': u'test'}], unchanged=(), deleted=())

因此,在包含字典的 JSONB 字段的值发生任何更改后,历史对象不知道已删除的值。这个问题也与 JSON 字段相关。

有谁知道问题出在哪里吗?

最佳答案

请结帐mutation tracking在 sqlalchemy 中

您可以尝试将您的 value 字段声明为 mutableDict

from sqlalchemy.ext.mutable import MutableDict
from sqlalchemy.dialects.postgresql import JSONB

value = db.Column(MutableDict.as_mutable(JSONB)

仅支持1级 key 。因此,如果您已嵌套更改,则需要指定它已更改。

value.changed()

关于python - SQLAlchemy,JSONB字段没有删除状态的历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46424104/

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