[컴][웹] Django 에서 Postgres 의 JSON type 을 사용하는 방법




JSONField for PostgreSQL

아래 글에서 예제를 보여준다. Django 1.9 부터 JSONField 가 제공된다. 그러나 postgres 에 특화된 것이라 models module 에 있지는 않다. (아래 코드 참고)


사용은 아래와 같다.

from django.contrib.postgres.fields import JSONField
...
setting = JSONField()

JSONField 를 사용하기 위해서는
  • PostgreSQL >= 9.4 
  • Psycopg2 ≥ 2.5.4.

이어야 한다. 자세한 내용은 아래 문서를 참고하자.
Django 1.9 이하에서도 사용할 수 있는 package 들이 존재한다. 구글에게 물어보면 된다.


Insert

아래 2가지 방법으로 insert 를 할 수 있다. 여기서 주의할 점은 jsonb 의 값이다. 필자는 처음에 모르고 string 으로 값을 넣어서 한참을 헤매었다. string 이 아니라 dict 를 넣어준다.

Dog.objects.create(name='Rufus', data={
...     'breed': 'labrador',
...     'owner': {
...         'name': 'Bob',
...         'other_pets': [{
...             'name': 'Fishy',
...         }],
...     },
... })

sdata = Dog()
sdata.name = 'Rufus'
sdata.data = {
...     'breed': 'labrador',
...     'owner': {
...         'name': 'Bob',
...         'other_pets': [{
...             'name': 'Fishy',
...         }],
...     },
... }
r = sdata.save()



See Also

  1. Python developer articles - Trying JSON in Django and PostgreSQL (and compare with MongoDB)

댓글 없음:

댓글 쓰기