PostgreSQL 9.2, yerel json veri türü desteğine sahiptir. Bu veri türünü model alanlarından biri olarak kullanabilen bir django modelini nasıl oluşturabilirim?Django'da PostgreSQL 9.2 JSON veri türünü nasıl kullanırım?
cevap
[Nb. Bir çok ben de cevabını güncelleme düşündüm soru yayınlanmıştır beri oldu - şimdi yeni Django-postgresql ve PostgreSQL 9.3 bilgilerin]
PostgreSQL dahil 9,3
PostgreSQL içindeJSON desteği (bkz doc fazla oluyor ve daha ilginç. JSON alanlarını sanki veritabanı sütunları gibi aramak mümkün! Bu destek hala temel ve standart sütun operatörleri ile eşit değil (bkz. daha önce), Django ORM ile kullanmak için son derece uygun olacak
PostgreSQL 9.2
JSON veri türü, pgSQL 9.2 içinde basically text'dir. Ne ekledi JSON doğrulama - yararlı, ancak kafa dönüm değil.
** Django ve Django ileri PostgreSQL desteği için
Son zamanlarda Kickstarted backed development PostgreSQL JSON birkaç ay önce finanse edildi. JSON türü için gelişmiş destek, ancak muhtemelen yalnızca 9.4:
için destek içerir. Postgres ekibi yakın zamanda bir jsonb veri türü - ikili depolanmış JSON desteğini birleştirmiştir. Postgre'lar 9.4 çıkana ve sadece jsonb veri tipini destekleyene kadar JSON desteğini geciktirmem olasıdır. Bunun birkaç nedeni vardır, en önemlisi mevcut json veri türünün uygulamada ciddi bir şekilde kısıtlanması, hatta bir eşitlik operatöründen yoksun olmasıdır. Bu, Django ek açıklama kodunun bazı bölümlerinin geçersiz sorgu oluşturduğunu (bu rapora bakın) ve aynı zamanda bir __exact arama işleminin yasaklanması gerektiği anlamına gelir. Django'daki tüm bu kenar durumlarını ele almak büyük miktarda karmaşıklığa yol açacaktır ve jsonu bir metin alanında depolamaktan elde ettiğiniz avantajlar aslında oldukça sınırlıdır. 9.4 bu yılın sonuna doğru çıkacak, sonuç olarak JSON alanlarının sadece 1.8 sürümde yer alması muhtemel.
Kaynak: Ayrıca mjtamlyn blog
Psycopg şimdi doğal JSON field (yanı sıra HSTORE) destekler.
** Django DIY özel bir veritabanı türünü kullanan kendi modeli alanı oluşturmak oldukça kolaydır django ise
, field db_type() bakınız **.
fark edin: Bu sadece pgSQL altında çalışacak
- - Şu anda çoğunlukla kazanacaktır
- (koşullu diğer veritabanları üzerinde 'text' türü dönebilirsiniz rağmen) Eğer kod taşınabilirliği sınırlandırıyor sadece veritabanı tarafı json doğrulama
- ve elbette doğrudan bir JSON nesnesini alma zevkini!
Ancak Python'un JSON için/direct/support'a sahip olmamasına dikkat edin, bu nedenle python'da json boşaltma/yükleme maliyetini gerçekten atlamıyorsunuz; string dönüşümden kaçınıyorsunuz - ancak içselleri kontrol etmedim veya herhangi bir gerçek fark olup olmadığını görmek için kıyaslama yapmam.
PostgreSQL 9.3 ile ve şeyler gibi görünüyor Ayrıca django JSONField başlayıp zaten boilercode plakasının bir sürü alabilir
daha ilginç hale gelebilir aşağıdaki basitçe db_type
yöntemini geçersiz.
Benim düşünceme göre, daha ilginç ve bir veritabanı kilitlemeye değer (her durumda pgSql seviyorum!), array_to_json
and row_to_json
kullanarak bir JSON yapısı olarak verileri yeniden almak için pgSQL seçeneğidir. Sorunun kapsamı dışında bir durum olsa da, bu durum queryset'lerde daha ciddi bir değişiklik gerektirir.
Django 1.9'dan itibaren, , Django ile birlikte gelen django.contrib.postgres.fields
modülünde kullanılabilir. Bu alan PostgreSQL alan tipini kullanır jsonb (json değil).
- 1. PostgreSQL 9.2'de hstore anahtarının yeniden adlandırılması
- 2. Postgresql ağaç veri yapısı
- 3. html kodunda json dosyasını nasıl kullanırım
- 4. Postgre sürümünde ">" karakterinden nasıl kurtulur 9.2
- 5. PostgreSQL bir json işlevini
- 6. PostgreSQL JSON alan türü vs MongoDB
- 7. ReSharper 9.2,
- 8. Oracle Veri Türünü Tanımla
- 9. MySQL vs PostgreSQL JSON arama özellikleri
- 10. sorgulamak için nasıl json veri Bu benim json verilerdir
- 11. CSV metin dizisi 9.2
- 12. JSON Yanıtında Sınıf Türünü Belirtme
- 13. postgresql tcp veri sıkıştırması
- 14. Postgresql veri kümesinin taşınması
- 15. SharePoint'te aynı alan türünü birden çok listede nasıl kullanırım?
- 16. PostgreSQL
- 17. Bir katmanın veri kaynağı türünü nasıl belirleyebilirim
- 18. C# 'daki MySQL'den veri türünü nasıl alabilirim?
- 19. PostGresql JSON sütunu HashWithIndifferentAccess olarak
- 20. AWS RDS'mde veri depolama alanını nasıl kullanırım?
- 21. PostgreSQL veritabanına Uzaktan Erişim Nasıl İzin Verilir
- 22. JSON için veri tabanında nasıl veri kaydedilecek?
- 23. mac os x 10.8.2'deki postgresql 9.2 varsayılan kullanıcısı (genellikle 'postgres') şifresini nasıl sıfırlarım?
- 24. Verileri clojure.java.jdbc kullanarak postgresql json sütunlarına ekleme
- 25. Eloquent'da JSON veri türü nasıl tanımlanır ve kullanılır?
- 26. Postgresql
- 27. Rails import JSON postgresql nesnesini oluşturmuyor
- 28. Postgres 9.2 - koşullu kısıtlama kontrolü ekleyin
- 29. elle yeni JSON veri
- 30. json veri dizisi
Json türünün içindeki alanları dizine ekleyemiyor musunuz? –
Aşağıdaki bağlantı, temel olarak metinden char alanına ( ) https://github.com/bradjasper/django-jsonfield#other-fields – stormlifter
Aynı soruyu ve bir kaç tane daha veri noktasını dizine eklemesine izin veren bir seçeneği gösterir: (1) 'django-pgfields', sarmalayıcıların JSON veri türünü kullanmasını sağlar, ancak Postgres JSON arama özelliklerine yerel erişim sağlamamaktadır. (2) Şubat 2014'te bir kickstarter, Django 1.8 için bir hedef teslimatı olan "django.contrib.postgres" içindeki tüm Postgres veri türleri için yerel Django desteğini uygulamak için tam olarak finanse edildi. Herkese açık olarak yayımlanan kod sadece çok temel özelliklere ilerledi: https://www.kickstarter.com/projects/mjtamlyn/improved-postgresql-support-in-django – mirth23