PostgreSQL 9.2具有本機json數據類型支持。我如何創建一個可以使用這種數據類型作爲模型字段之一的django模型?如何在Django中使用PostgreSQL 9.2 JSON數據類型?
回答
[Nb。發生了許多事情,因爲這個問題被張貼,所以我想更新的答案太 - 現在包括新的Django的PostgreSQL和PostgreSQL 9.3資料]
的PostgreSQL 9.3
JSON支持PostgreSQL中(見doc越來越更有趣的是,現在可以在JSON字段上搜索就好像它們是數據庫列一樣!這種支持仍然是基本的,與標準列運算符不同(見前),因此它將很快通過Django ORM 。
PostgreSQL 9.2
pgSQL 9.2中的JSON數據類型爲basically text。增加的是JSON驗證 - 有用,但不是轉向。
** Django和PostgreSQL的JSON
最近Kickstarted backed development在Django的高級PostgreSQL的支持是幾個月前的資助。它將包括對JSON類型的高級支持,但可能只有9.4:
Postgres團隊最近合併了對jsonb數據類型的支持 - 二進制存儲的JSON。很可能我會延遲JSON支持,直到Postgres 9.4結束並且只支持jsonb數據類型。這有幾個原因,最重要的是目前的json數據類型在其實現方面受到嚴格限制,甚至缺乏平等運算符。這意味着Django註釋代碼的某些部分會生成無效查詢(請參閱此報告),也意味着必須禁止__exact查找。爲了在Django中正確處理所有這些邊界案例會導致大量的複雜性,並且將json存儲在文本字段中的好處實際上非常有限。 9.4將在今年年底發佈,因此JSON字段很可能僅在1.8版本中發佈。
Psycopg還現在本身支持JSON field(以及HSTORE)。
** DIY在Django **
在Django它很容易地創建一個使用特殊的數據庫類型自己的示範田,見field db_type()。
請注意:
- 這隻會pgSQL的下工作 - 你限制你的代碼的可移植性(儘管你可以有條件地返回其他數據庫上一個「文本」類型)
- 你將目前大多獲得只有數據庫端json驗證
- 當然還有直接檢索JSON對象的樂趣!
但要小心,Python沒有/直接/支持JSON,所以你真的不跳過JSON轉儲/加載成本在Python中;你確實避免了字符串轉換 - 但我沒有檢查內部結構或進行基準測試,看看是否有任何實際差異。
在PostgreSQL 9.3及以下的模樣事情可能變得更加有趣
你也可以從django JSONField啓動,並得到了很多boilercode板已經,只需重寫db_type
方法。
在我看來,聽起來更有趣並且值得數據庫鎖定(我喜歡pgSql,無論如何!),pgSQL中的選項是使用array_to_json
and row_to_json
作爲JSON結構重新使用數據。 這將需要一個更嚴重的變化來查詢集,雖然,這聽起來你的問題的範圍。
- 1. 如何在PostgreSQL 9.2中對JSON數據編制索引?
- 2. PostgreSQL 9.2 - 將TEXT json字符串轉換爲json/hstore類型
- 3. 如何使用Hibernate映射postgresql json數據類型?
- 4. PostgreSQL中JSON數據類型的大小限制
- 5. 如何在Django中使用PostgreSQL的「文本」列類型?
- 6. Sequelize:在PostgreSQL上使用$ like JSON數據類型
- 7. 如何在sqlalchemy中查詢來自postgresql的json數據類型的數據?
- 8. POCO :: PostgreSQL檢索JSON數據類型
- 9. PostgreSQL中適用於JSON數據類型的正確用例是什麼?
- 10. 在Django中使用json數據填充模型(數據庫)
- 11. 如何在postgresql「json」數據類型中存儲日期以便與plv8一起使用?
- 12. 如何在angular2中使用JSON數據填充類/模型
- 13. 使用Dapper和Postgresql - citext數據類型
- 14. 如何在postgresql中的JSON類型列上使用JSON運算符9.3
- 15. Postgresql 9.2?符號
- 16. PostgreSQL:如何識別數據類型?
- 17. postgresql中hstore vs json數據類型的用例
- 18. PostgreSQL中的幾何數據類型
- 19. postgresql上的緩存數(*)9.2
- 20. 如何使用jQuery Post和Java在PostgreSQL中保存json數據?
- 21. 在PostgreSQL中找不到數據類型
- 22. 在Django視圖中使用JSON數據
- 23. 使用now()作爲postgresql中tztsrange的默認值9.2
- 24. 如何在jdbctemplate中使用PostgreSQL hstore/json
- 25. 在sqlalchemy中使用postgresql xml數據類型
- 26. PostgreSQL + Django:用於多類型數據的SQL設計模式
- 27. Postgresql 9.2 DBLINK windows 7
- 28. PostgreSQL 9.2流複製
- 29. PostgreSQL和C數據類型
- 30. 數據類型與PostgreSQL的
你能否在JSON類型中的字段沒有索引? –
下面的鏈接顯示了一個選項,允許索引,基本上從文本更改爲char場 https://github.com/bradjasper/django-jsonfield#other-fields – stormlifter
有同樣的問題,一對夫婦更多的數據點: (1)'django的-pgfields'提供包裝器來使用JSON數據類型,而是Postgres的JSON查找特徵沒有本地訪問。 (2)2014年2月一個Kickstarter的是充分的資金回到落實所有Postgres的數據類型本地Django的支持'django.contrib.postgres'與目標交付的Django 1.8。公開發布的代碼只發展到非常基本的功能:https://www.kickstarter.com/projects/mjtamlyn/improved-postgresql-support-in-django – mirth23