这只是一个简单的例子.
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/