第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

訪問(wèn)sqlalchemy中沒(méi)有key的json

訪問(wèn)sqlalchemy中沒(méi)有key的json

慕桂英4014372 2023-08-08 16:18:59
我有一列“ value ”,類(lèi)型為 postgres ' JSON '。值列中的示例數(shù)據(jù)?!帮@示名稱(chēng)1”{“middleName”:“其他”}[{"primary": true, "type": "work", "value": "rusr@r.com"}, {"primary": true, "type": "work", "value": "iu @n.com"}]我知道我可以使用這樣的鍵值對(duì)訪問(wèn) json,.filter(Values.value['middleName'].astext=='other')(值為型號(hào)名稱(chēng))問(wèn)題是如何訪問(wèn)字符串值或?qū)ο髷?shù)組。我試過(guò),.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')- 在這里我嘗試過(guò)濾數(shù)組中的“type”:“work”對(duì)象。你怎么做到這一點(diǎn)。是否可以在不指定索引的情況下搜索所有對(duì)象。我使用 postgres 作為后端數(shù)據(jù)庫(kù)???-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()
查看完整描述

3 回答

?
飲歌長(zhǎng)嘯

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊

如果有人仍在尋找答案,這就是它的完成方法

(cast(Values.value, db.String())=='"Employee"'))

以上是存儲(chǔ)在 JSONB 列中的字符串。請(qǐng)注意該過(guò)濾器中使用的引號(hào)。

(Values.value.contains([{"type":"examplecom"}]))

這個(gè)用于在 JSONB 列中搜索 JSON 數(shù)組


查看完整回答
反對(duì) 回復(fù) 2023-08-08
?
互換的青春

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

假設(shè)json對(duì)象是一個(gè)字符串,使用json.loads將其轉(zhuǎn)換為字典,然后正常索引。


>>> import json

>>> s = """[{"primary": true, "type": "work", "value": "rusr@r.com"}, {"primary": true, "type": "work", "value": "iu@n.com"}]"""

>>> my_dict = json.loads(s)

>>> my_dict[0]['type']

'work'

然后,您可以使用以下列表理解來(lái)搜索 type == 起作用的任何行。


>>> search = [i for i in my_dict if i['type'] == 'work']

>>> search

[{'primary': True, 'type': 'work', 'value': 'rusr@r.com'}, {'primary': True, 'type': 'work', 'value': 'iu@n.com'}]

這是一個(gè)不使用列表理解的相同事物的示例。


>>> search = list()

>>> for i in my_dict:

...     if i['type'] == 'work':

...             search.append(i)

...

>>> search

[{'primary': True, 'type': 'work', 'value': 'rusr@r.com'}, {'primary': True, 'type': 'work', 'value': 'iu@n.com'}]



查看完整回答
反對(duì) 回復(fù) 2023-08-08
?
慕姐4208626

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊

我無(wú)法測(cè)試代碼,但你可以嘗試一下。


l = .filter(User_Values.value)

s = [[x for x in i if x['type'].astext=='work'] for i in l if isinstance(i, list)]

如果可以向我提供創(chuàng)建表的代碼,我可以進(jìn)行測(cè)試以提供更好的答案。如果這不是您想要的,請(qǐng)?zhí)崆氨浮?/p>


查看完整回答
反對(duì) 回復(fù) 2023-08-08
  • 3 回答
  • 0 關(guān)注
  • 217 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)