如何在SQLAlchemy中查询由JSON列过滤的数据?

meh*_*hdy 7 python postgresql sqlalchemy flask-sqlalchemy

我有一个使用flask-SQLAlchmey的烧瓶应用程序.我有这样的数据库模型

from sqlalchemy.dialects.postgresql import JSON
from flask.ext.sqlalchemy import SQLAlchemy
Run Code Online (Sandbox Code Playgroud)

...

db = SQLAlchemy()
Run Code Online (Sandbox Code Playgroud)

...

class Custom(db.Model):
    __tablename__ = 'custom'
    ...
    data = db.Column(JSON)
    ...
Run Code Online (Sandbox Code Playgroud)

数据字段是这样的: [{"type": "a string", "value": "value string"}, {"type": "another", "value": "val"}, ...]

我想查询其数据包含的所有自定义对象.{"type": "anything", "value": "what I want"}

meh*_*hdy 8

我发现它使用cast:

from sqlalchemy.types import Unicode
# codes...
Custom.query.filter(Custom.data['value'].astext.cast(Unicode) == "what I want")
Run Code Online (Sandbox Code Playgroud)

  • 有关此文档可在此处找到:http://docs.sqlalchemy.org/en/latest/dialects/postgresql.html#sqlalchemy.dialects.postgresql.JSON (2认同)