使用postgresql jsonb字段类型的django jsonfield

django-jsonbfield的Python项目详细描述


**注意:**这基本上是django主分支postgres contrib包中jsonb支持的独立版本,针对django 1.9版本。

j现场
----

…类::json field(**options)

存储json编码数据的字段。在python中,数据以其python原生格式表示:字典、列表、字符串、数字、布尔值和“none”。

注意:

postgresql有两种基于json的本地数据类型:``json``和``jsonb``。
它们之间的主要区别在于如何存储和如何查询它们。postgresql的“json”字段存储为json的原始字符串
表示形式,当根据键查询
时必须动态解码。“JSONB”字段是基于JSON的实际结构BR/>存储的,它允许索引。权衡是写入“jsonb”字段时的一小部分额外成本。`` jsonfield``使用``jsonb`.

**此字段仅在PostgreSQL版本至少9.4**上受支持。




查询jsonfield
===


我们将使用以下示例模型::


从django.contrib.postgres.fields导入jsonfield
从django.db导入模型


dog(models.model):
name=models.charfield(max_length=200)
data=jsonfield()

def_uuu str_uu(self):\uu unicode_uu on python 2
返回self.name

fieldlookup::jsonfield.key

key、index和path lookup
=======


==要基于给定的字典键进行查询,只需使用该键作为查找名:


>;>;dog.objects.create(name='rufus',data={
…'品种':'拉布拉多',
…所有者“:{
…”姓名':'鲍勃',
…'其他宠物“:[{
…”名字':'鱼',
…}],
…},

>>>gt>gt;dog.dog.objects.create(name='meg',data={'breed':'collie'collie'})dog.objects.filter(data='collie'collie''collie'collie')
>[<;dog:meg>;]




>
>

>
>
>
>
>>
>

>

>


>
>
>
>

>
>

>
:鲁弗斯>;]

如果键是整数,则它将被解释为在
数组中的索引查找:


>;>;dog.objects.filter(数据所有者其他宠物名为“fishy”)
[<;dog:rufus>;]

使用:lookup:`jsonfield.contains`查找。


如果只使用一个键或索引,则使用sql运算符`->;`'。如果使用多个
运算符,则使用``运算符。

。警告::

由于任何字符串都可以是json对象中的键,因此除了
下面列出的任何查找都将被解释为键查找。没有出现任何错误。请格外小心键入错误,并始终检查查询
是否按预期工作。

fieldlookup::jsonfield.包含
…fieldlookup::jsonfield.contained_by
。字段查找::jsonfield.has_key
…fieldlookup::jsonfield.has_any_keys
。fieldlookup::jsonfield.has_keys

:类:`~django.contrib.postgres.fields.jsonfield`共享与
包含相关的查找,并与以下项共享密钥:类:`~django.contrib.postgres.fields.hstorefield`.

-:查找:`contains<;hstorefield.contains>;`(接受任何json,而不是
仅接受字符串字典)
-:查找:`包含由<;hstorefield.contained由>;`(接受任何json
,而不仅仅是字符串字典)
-:查找:`具有关键字<;hstorefield.has\key>;`
-:查找:`具有任何关键字<;hstorefield。has_any_keys>;`
-:查找:`has_keys<;hstorefield.has_keys>;。`

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java操作数组上的字符串   java JAXB内容未实例化   图形在Java中如何绘制垂直居中的字符串?   java Apache Ant:使用Junit时出现NoClassDefFoundError   java无法从服务器上运行perl脚本   如何在java中沿树进行预排序遍历,并打印0和1以对应每个节点上的特定字符?   java如何创建。p12文件?   java线程访问无效   java只匹配命名空间中的XML节点,而不知道NS前缀   从java获取2d arraylist元素   数组Java动态集合对象   java Xpath通过通配符或布尔运算查找以相同名称开头的节点?   java注释元素类型   java在中看不到Super()。反编译后的类文件