SQLAlchemy' Comparator'对象没有属性' has_key'

时间:2015-12-01 18:31:10

标签: python json postgresql sqlalchemy

我正在使用JSON SQLAlchemy列,我的查询语句需要' has_key'属性,但显然我的'比较器'对象没有此属性。

Transaction.query.filter(Transaction.fields.has_key('issuername')).all()

其中Transaction.fields是一个列(JSON)。我得到了错误"属性错误:没有' InstrumentedAttribute'对象也不是'比较器'与Transaction.fields相关联的对象具有属性' has_key'"。我的SQLAlchemy是最新版本1.09。我是否构建此查询错误?

1 个答案:

答案 0 :(得分:2)

has_key运算符特定于JSONB

  

JSONB类型包括JSON提供的所有操作,包括   索引操作的相同行为。它还增加了额外的   特定于JSONB的运算符,包括JSONB.Comparator.has_key(),   JSONB.Comparator.has_all()JSONB.Comparator.has_any(),   JSONB.Comparator.contains()JSONB.Comparator.contained_by()

对于JSON列,您可以使用-> PostgreSQL运算符(按键获取JSON对象字段)

Transaction.query.filter(Transaction.fields.op('->')('issuername')!=None).all()