Python 如何在sqlalchemy表达式语言中使用jsonb与select表达式中的整数进行比较?
如何使用sqlalchemy核心表达式语言访问jsonb字典值?例如:Python 如何在sqlalchemy表达式语言中使用jsonb与select表达式中的整数进行比较?,python,postgresql,sqlalchemy,Python,Postgresql,Sqlalchemy,如何使用sqlalchemy核心表达式语言访问jsonb字典值?例如: s1 = select([issues.c.id, issues.c.data['product_id'], products.c.name.label('product_name') ]). \ where(issues.c.id == issue_id). \ select_from(issues. outerjoin
s1 = select([issues.c.id,
issues.c.data['product_id'],
products.c.name.label('product_name')
]). \
where(issues.c.id == issue_id). \
select_from(issues.
outerjoin(products,
(issues.c.data['product_id']).cast(Integer) == (products.c.id)))
问题表中存储的数据如下:
id | data------+
5247 | {"priority": "M", "product_id": "1"}
如何确切地使用此表达式连接表。上面给出的错误为:
sqlalchemy.exc.ProgrammingError:(psycopg2.errors.UndefinedFunction)运算符不存在:jsonb=integer
在转换为integer之前添加astext得到它:
s1 = select([issues.c.id,
issues.c.data['product_id'],
products.c.name.label('product_name')
]). \
where(issues.c.id == issue_id). \
select_from(issues.
outerjoin(products,
(issues.c.data['product_id']).astext.cast(Integer) == (products.c.id)))