Tai*_*Tea 21 django postgresql json
PostgreSQL 9.2具有本机json数据类型支持.如何创建可以将此数据类型用作模型字段之一的django模型?
Ste*_*ano 30
[注.自问题发布以来发生了很多事情,所以我想更新答案 - 现在包括新的Django-postgresql和PostgreSQL 9.3信息]
PostgreSQL 9.3
PostgreSQL中的JSON支持(请参阅文档变得越来越有趣.现在可以在JSON字段上搜索,就像它们是数据库列一样!这种支持仍然是基本的,与标准列操作符不同(见前),如这样通过Django ORM可以使用它.
PostgreSQL 9.2
JSON数据类型基本上是pgSQL 9.2中的文本.增加的是JSON验证 - 有用,但不是转头.
**Django和PostgreSQL JSON
最近Kickstarted在Django中支持高级PostgreSQL支持的开发在几个月前得到了资助.它将包括对JSON类型的高级支持,但可能仅在9.4中:
Postgres团队最近合并了对jsonb数据类型的支持 - 二进制存储JSON.在Postgres 9.4退出并且只支持jsonb数据类型之前,我很可能会延迟JSON支持.这有几个原因,最重要的是当前的json数据类型在其实现中受到严重限制,甚至缺少相等运算符.这意味着Django注释代码的某些部分会生成无效查询(请参阅此报告),这也意味着必须禁止__exact查找.要在Django中正确处理所有这些边缘情况会导致大量的复杂性,并且您在文本字段中存储json所获得的好处实际上非常有限.9.4将于今年年底推出,因此JSON字段很可能仅在1.8版本中出现.
资料来源:mjtamlyn博客
Psycopg现在也支持 JSON字段(以及HSTORE).
**Django中的DIY**
在django中,使用特殊的数据库类型创建自己的模型字段非常容易,请参见字段db_type().
请注意:
但要小心Python没有/直接/支持JSON,所以你并没有真正跳过python中的json转储/加载成本; 你确实避免了字符串转换 - 但我没有检查内部或基准测试,看看是否有任何真正的区别.
使用PostgreSQL 9.3以及以下内容可能会变得更有趣
您也可以从django JSONField开始并获得大量的boilercode版,只需覆盖该db_type
方法.
听起来,在我看来,更有趣,值得数据库锁定(我喜欢pgSql,无论如何!),是pgSQL中的一个选项,可以使用array_to_json
和row_to_json
将数据重新作为JSON结构.这需要对查询集进行更严格的更改,这听起来超出了您的问题的范围.
归档时间: |
|
查看次数: |
11058 次 |
最近记录: |