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

时间:2016-10-08 03:47:07

标签: python postgresql sqlalchemy

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

 id |   data   
----+----------
  1 | {}
  2 | {"a": 1}
(2 rows)

如何找到没有密钥的行。例如""或数据[" a"]?

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

1 个答案:

答案 0 :(得分:2)

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

session.query(Json_test).filter(sqlalchemy.not_(Json_test.data.has_key('a')))

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

session.query(Json_test).filter(Json_test.data.op('->')('a')==None)