将 jsonb 类型添加到 CubicWeb
项目描述
将新的属性类型添加到 CubicWeb: Jsonb。此类型映射到 jsonb PostgreSQL 数据类型。
声明
在您的模式中,您可以使用以下方式使用新类型
>>> class MyEntityType(EntityType): ... json_attribute = Jsonb(required=True) ...
获取/设置
要为 Jsonb 属性提供值,您可以使用以下方式
一个字典,
一个 JSON 字符串。
例如,您可以编写以下代码
>>> my_entity.cw_set(json_attribute={'a': [1, 2, 3]})
以下代码将产生完全相同的效果
>>> my_entity.cw_set(json_attribute=u'{"a": [1, 2, 3]}')
请注意,无论您以何种方式设置值(字符串或字典),您在请求它时都将始终返回一个字典
>>> my_entity.json_attribute {u'a': [1, 2, 3]}
查询
在 RQL 中,您可以通过多种方式查询 Jsonb 属性。例如,您可以请求包含特定键/值对的属性
>>> import json >>> rql('Any X WHERE X json_attribute J HAVING JSONB_CONTAINS(J, %(json_value)s)=True', {'json_value': json.dumps({u'a': 1})})
您可以请求存在特定的键
>>> rql('Any X WHERE X json_attribute J HAVING JSONB_EXISTS(J, %(key)s)=True', {'key': u'b'})
您可以获取键的值
>>> rql('Any JSONB_GET(J, %(key)s) WHERE X json_attribute J, X eid %(eid)s', {'key': u'a', 'eid': 1234})
注意: JSONB_GET() 将 始终 返回一个字符串。如果值是 JSON 对象(或 JSON 数组),您可能希望之后使用 json.loads() 以获得字典(或列表)。
最后一点:如 PostgreSQL 文档建议,您应使用相同的结构在同一个列中存储您的 JSON 数据。这使得查询更加容易。
项目详情
下载文件
下载适合您的平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。
源代码分发
cubicweb-jsonb-0.4.0.tar.gz (9.5 kB 查看哈希值)
构建分发
关闭
cubicweb-jsonb-0.4.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9593dfdf325d519632231ee06624f3bbbea86a5f0d44592c175ae26a0d5a51d1 |
|
MD5 | a6652d464aaf18093caca98f52e7f898 |
|
BLAKE2b-256 | 11c3097ccceaa9f524cabd6d35ea2ea1229e95145df4f74924d602f90532f943 |
关闭
cubicweb_jsonb-0.4.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d46ddb78fc45e33441783c56d7da07bc718cfa5aefbc4765ea06a5d77ef577e6 |
|
MD5 | 16577222efecc7062b23c00e17993993 |
|
BLAKE2b-256 | d66e10d8f358bbe824afb02057246d683193ac72d34fc0335a5374693a9cf5b3 |