mysql - 使用 `sqlalchemy.types.JSON` 数据类型通过 SQLAlchemy 查询 JSON

标签 mysql json postgresql sqlalchemy

我在 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: 'BinaryExpression' 对象和 'Comparator' 对象都没有属性 'astext '

由于上述是最基本的过滤器,这是否意味着为了进行任何类型的查询,您必须使用特定 SQL 方言中的类型?换句话说:是否可以修改上述查询并使其在使用 sqlalchemy.JSON 类型时运行? (这将允许代码在 PostreSQL 和 MySQL 上运行)

最佳答案

也许你可以尝试如下 从 sqlalchemy 导入 JSON 从 sqlalchemy.sql.expression 导入强制转换 结果 = session.query(FooModel).filter(FooModel.info['key1'] == cast(1, JSON).all()

关于mysql - 使用 `sqlalchemy.types.JSON` 数据类型通过 SQLAlchemy 查询 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40713647/

相关文章:

postgresql - 将 json 字符串从 spring 应用程序插入到 postgres jsonb

ruby-on-rails - 创建一个无数据库的 rails 模型,作为在 elasticsearch 中索引数据的 View

mysql - 计数问题

python - 如何在 Visual Studio 2013 上安装 Python 的 Mysql 包

php - 我可以在 Codeigniter 上使用两个 mysql 用户吗?

json - Grails将json渲染到特定 View

c# - 在 C# WebForm 上反序列化动态 JSON 数组

mysql - 如何将 0..* 到 2 基数转换为关系模型?

javascript - 遍历没有数组的 JSON 键对象

sql - 触发器似乎是在事务之后触发的,而不是在命令/语句之后