inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)

06-03 메모리 효율적인 대량 데이터 마이그레이션

메모리 효율성을 개선한 버전 질문 있습니다.

해결된 질문

250

yezi9733

작성한 질문수 25

0

for chunks in get_chunks(zipcode_list, chunk_size=1000):
        print("chunk size:", len(list(chunks)))
        ZipCode.objects.bulk_create(chunks)


https://gist.github.com/allieus/f16d5d35b84d418cbabcfed8e69b96e2
깃허브 Gist에 올라온 코드를 그대로 복사 붙여넣기 하고 마이그레이트를 했더니 데이터 베이스에 데이터가 삽입이 안되었습니다.

그래서 디버깅을 해보았는데 위에 해당 코드블럭 부분에서 print("chunk size:", len(list(chunks)))은 그저 디버깅을 위한 코드일텐데 해당 구문이 bulk_create 보다 먼저 선언 되어있다면 데이터 삽입이 이루어지지 않습니다.

Django 버전 문제인가 싶어서 5.0.4에서 4.2.7로 버전을 내린 다음 해봐도 결과는 같네요.

제너레이터 문법은 이번 강의에서 처음 접하였는데 해당 문법과 연관이 있는것인가요?

react python django web-api htmx

답변 2

0

이진석

간단 예시입니다. :-) list(chunks) 과정에서 chunks generator가 끝까지 수행되어, 더 이상 값을 생성할 수 없게 됩니다.

image

0

이진석

안녕하세요.

print("chunk size: ", len(list(chunks))) 코드는 단지 디버깅을 위한 코드가 아닙니다. chunks 는 Generator이구요. list(chunks)를 통해 값을 모두 생성해버렸기 때문에, 그 아래의 bulk_create(chunks) 에서는 더 이상 chunks 에서 생성해낼 값이 없는 상황입니다.

이 경우, 아래처럼 chunks Generator로부터 값을 한 번 생성할 때, 리스트로 먼저 저장하신 후에 길이를 출력하고 활용하실 수 있습니다. :-)

for chunks in get_chunks(zipcode_list, chunk_size=1000):
    chunks_list = list(chunks)
    print("chunk size:", len(chunks_list))
    ZipCode.objects.bulk_create(chunks_list)

1

yezi9733

해당 프린트 구문에서 값을 전부 소진하여서 bulk_create 라인에서는 더 이상 수행할 값이 없으니 그대로 종료 되는거였군요. 덕분에 제너레이터가 어떻게 동작하게 되는지 확실히 알게되었습니다 감사합니다!

0

이진석

옙. Generator가 다시 처음부터 시작될려면, Generator 객체를 다시 생성해주셔야 합니다.

화이팅입니다. 👍

Django의 View나 URL의 네이밍 컨벤션

0

60

1

08-14 FormView 관련 질문

0

72

1

07-01 IPv4AddressIntegerField 질문

0

82

1

14-08 수업 확인 요청 드립니다.

0

91

2

nextjs git 관리?

0

75

1

14-07에서 SESSION_COOKIE_DOMAIN = None 처리 필요.

0

75

2

고민

0

219

3

django-component==0.139 실행 시 오류

0

167

2

django-csp 4.0 migration 관련

0

122

2

01 윈도우 개발환경 설치 문의

0

99

1

강의 자료 문의

0

129

2

선생님 학습 방법 질문이 있습니다.

0

154

2

bulk_update에서 updated_at 필드

0

124

1

정규표현식

0

107

2

선생님 질문 있습니다.

0

80

1

공유자님 이 강의 공부 방법에 대한 질문입니다.

0

181

2

mydjango.py 질문 있습니다.

0

147

3

Django-Components의 0.128 세팅

0

226

3

질문 아님.

0

127

1

mydjango.py 실습 질문있습니다.

0

88

2

pycharm 개발환경 설정 오류

0

182

2

강의 듣다가 유료pycharm에 비해 vscode지원기능이 아쉬워서 확장프로그램 만들었는데 여기 공유해도 될까요?

0

167

1

중단점에 대한 질문 있습니다.

0

133

2

todo / react 붙이는 깃주소를 받고 싶습니다.

0

179

6