我有一列“ value ”,类型为 postgres ' JSON '。值列中的示例数据。
“显示名称1”
{“middleName”:“其他”}
[{"primary": true, "type": "work", "value": "rusr@r.com"}, {"primary": true, "type": "work", "value": "iu @n.com"}]
我知道我可以使用这样的键值对访问 json,
.filter(Values.value['middleName'].astext=='other')
(值为型号名称)
问题是如何访问字符串值或对象数组。
我试过,
.filter(Values.value.astext=='displayname1')
它给了我AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object associated with Values.value has an attribute 'astext'
和
.filter(Values.value['type'].astext=='work')
- 在这里我尝试过滤数组中的“type”:“work”对象。你怎么做到这一点。是否可以在不指定索引的情况下搜索所有对象。
我使用 postgres 作为后端数据库。
楷模 -
class Values(db.Model):
__tablename__ = 'attribute_values'
id = db.Column(db.Integer, primary_key=True)
attribute = db.Column(db.Integer, ForeignKey('attributes.id'), primary_key=True)
value = db.Column(JSON)
class Attributes(db.Model):
__tablename__ = 'attributes'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.Text)
user_attribute = db.relationship(Values, backref='attributes', primaryjoin=id == Values.attribute)
查询我正在尝试 -
db.session.query(Values).join(Attributes, Values.attribute == Attributes.id).filter("what filters that i should be using for the cases mentioned above").all()
饮歌长啸
互换的青春
慕姐4208626
相关分类