没有特定键的 sqlalchemy JSON 查询行(键存在)

Akw*_*Mak 3 python postgresql sqlalchemy

将 sqlalchemy 与 postgresql 一起使用时,我有下表和数据:

 id |   data   
----+----------
  1 | {}
  2 | {"a": 1}
(2 rows)
Run Code Online (Sandbox Code Playgroud)

如何找到没有键的行。例如“a”或数据[“a”]?

Give me all objects that does not have the key a.
 id |   data   
----+----------
  1 | {}
(1 row)
Run Code Online (Sandbox Code Playgroud)
self.session.query(Json_test).filter(???)
Run Code Online (Sandbox Code Playgroud)

kli*_*lin 5

如果列类型是jsonb您可以使用has_key

session.query(Json_test).filter(sqlalchemy.not_(Json_test.data.has_key('a')))
Run Code Online (Sandbox Code Playgroud)

对于jsonjsonb类型,这应该有效:

session.query(Json_test).filter(Json_test.data.op('->')('a')==None)
Run Code Online (Sandbox Code Playgroud)