안녕하세요 간간히 들러서 글만 보다가 질문하나 드립니다. 장고 모델에 대량의 데이터를

 
이주호

안녕하세요 간간히 들러서 글만 보다가 질문하나 드립니다.

장고 모델에 대량의 데이터를 한번에 빠르게 넣는 방법을 잘 모르겠습니다.

python manage.py loaddata 기능을 이용하려 했으나 . PK를 자동으로 생성하는 방법을 모르겠더군요 ~

고수님 조언 부탁드립니다.

  • Donghyun Cho

    dump된 데이터를 처리하시는 건가요? pk들이 없다면 한 테이블에 넣으실 건가요? 아시겠지만, 만약 테이블이 여러개고 relationship이 있다면 pk없이는 하실 수 없습니다.
    만약 autoincreasment 셋업된 pk를 가진 테이블은 dump된 데이터를 sql 커멘드로 import하시면 알아서 넣어줍니다.
    만약 테이블이 여러개고, fk로 관계가 형성되어 있다면 South의 datamigration을 이용하여 동적으로 데이터를 추가하실 수 있어요. django south로 검색하시면 될꺼에요. 이마 django 1.7버전부턴 South 마이그레이션 툴이 기본 탑재될꺼에요.

    Chinseok Lee

    loaddata 는 pk를 지정해줘야 되구요. 매 row 마다 save 를 호출하기 때문에 (commit), 데이터가 아주 많을 경우에는 데이터 저장이 느릴 겁니다.

    혹은 django model 에서 지원하는 bulk_create 를 쓸 수 있습니다. 단, 데이터 파싱을 직접 하셔야 됩니다. https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.bulk_create

    또는 SQL 로 insert 하시는 방법도 괜찮습니다.

    이주호

    Donghyun Cho님 답변 감사 합니다 dump된 데이터를 사용 하는건 아니고 json 형식으로 새로 생성한 데이터를 밀어넣으려는겁니다 임시 방편으로 pk를 중복되지 않게 임의로 부여해서 처리 했습니다

    이진석님 답변 감사합니다. bulk_create 유용하게 사용할수 있슬것 같습니다^^ 감사합니다

Advertisements