【发布时间】:2017-04-04 11:06:48
【问题描述】:
我在 SQLAlchemy 中有下表:
class FooModel(Base):
__tablename__ = 'table'
id = sqla.Column('id', INTEGER, primary_key=True)
info = sqla.Column(JSON)
我想执行以下查询:
result = session.query(FooModel).filter(
FooModel.info['key1'].astext.cast(INTEGER) == 1).all()
只要我表中的info 列是sqlalchemy.dialects.postgresql.JSON 类型,上述查询就可以正常工作。但是,如果我从sqlalchemy.JSON 使用JSON,我会收到以下错误:AttributeError: Neither 'BinaryExpression' object nor 'Comparator' object has an attribute 'astext'。
由于以上是最基本的过滤器,这是否意味着为了进行任何类型的查询,您必须使用特定 SQL 方言的类型?换句话说:当我使用 sqlalchemy.JSON 类型时,是否可以修改上述查询并使其运行? (这将允许代码在 PostreSQL 和 MySQL 上运行)
【问题讨论】:
标签: mysql json postgresql sqlalchemy