如何使用SQLAlchemy查询JSON类型的字段?

这只是一个简单的例子.

field = [[1,12,6], [2,12,8]]

我想在sqlite3数据库中使用SQLAlchemy将它存储在json类型的字段中.

但是如何使用SQLAlchemy(而不是SQL)查询?
例如

> len(字段)为3的行
>行wehre field [1] [2]不是12
>行wehre len(字段[*])不是3
>按字段分组[2]
> sum [1]其中field [0]为1

它甚至可能吗?

也许使用经典的多对多表(包括链接表)而不是json-field来实现它会更容易?

最佳答案 根据官方文档,这些是SQLAlchemy为JSON字段提供的可用方法.

JSON提供了几个操作:

指数操作:

data_table.c.data['some key']

返回文本的索引操作(文本比较所需):

data_table.c.data['some key'].astext == 'some value'

内置CAST调用的索引操作:

data_table.c.data['some key'].cast(Integer) == 5

路径索引操作:

data_table.c.data[('key_1', 'key_2', ..., 'key_n')]

路径索引操作返回文本(文本比较所需):

data_table.c.data[('key_1', 'key_2', ..., 'key_n')].astext == \
'some value'

http://docs.sqlalchemy.org/en/latest/dialects/postgresql.html#sqlalchemy.dialects.postgresql.JSON

根据我对PostgreSQL中JSON类型的了解,它最好只在您需要整个JSON对象时才使用.如果要在JSON对象的字段上进行类似操作的SQL,那么最好使用经典的SQL关系.这是我发现的同一件事的一个来源,但还有更多. http://blog.2ndquadrant.com/postgresql-anti-patterns-unnecessary-jsonhstore-dynamic-columns/

点赞