【问题标题】:Query JSON with SQLAlchemy using the `sqlalchemy.types.JSON` data type使用 `sqlalchemy.types.JSON` 数据类型使用 SQLAlchemy 查询 JSON
【发布时间】: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


    【解决方案1】:

    也许你可以尝试如下 from sqlalchemy import JSON from sqlalchemy.sql.expression import cast result = session.query(FooModel).filter(FooModel.info['key1'] == cast(1, JSON).all()

    【讨论】:

      猜你喜欢
      • 2015-10-26
      • 1970-01-01
      • 2016-10-07
      • 1970-01-01
      • 2023-03-13
      • 2020-03-10
      • 2016-12-22
      • 2015-04-13
      • 1970-01-01
      相关资源
      最近更新 更多