这只是一个简单的例子。
field = [[1,12,6], [2,12,8]]
我想在sqlite3数据库中使用SQLAlchemy将它存储在json类型的字段中。
但是如何使用SQLAlchemy(而不是SQL)查询? e.g。
甚至可能吗?
使用经典的多对多表(包括链接表)而不是json-field来实现它可能会更容易吗?
答案 0 :(得分:2)
根据官方文档,这些是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/