2011-11-13 4 views
0

내 응용 프로그램이 저장하는 모든 전자 메일 주소의 쉼표로 구분 된 목록을 원합니다. 그것은 일반 요청에 대한 너무 큰 그리고 Blob 저장소에 쓰기도 너무 많은 요청입니다 :데이터 저장소의 속성을 가진 파일 작성

class CSVHandler(webapp2.RequestHandler): 
    def get(self): 
     entities = Entity.all().fetch(10000) 
     s = '' 
     for entity in entities: 
      s= s+","+str(entity.email)  
     file_name = files.blobstore.create(mime_type='application/octet-stream')  
     with files.open(file_name, 'a') as f: 
      f.write(s)  
     files.finalize(file_name)  
     blob_key = files.blobstore.get_blob_key(file_name) 

나는이 작업, 큐, 백엔드 또는 대신 다른 무언가로 할 수 있습니까?

이 어떤 제안

답변

1

단일 파일 작업으로 전체 파일을 저장하는 대신 청크로 작성된 BLOB 저장소에 파일을 저장하십시오. csv 모듈을 사용하면이 작업을보다 쉽게 ​​수행 할 수 있으므로 점진적으로 작성할 수 있습니다.

+0

조언 해 주셔서 감사합니다. 그러나 1) 데이터를 어떻게 분할합니까? 2) CSV 모듈을 사용해야하는 예제 코드를 보내 주시겠습니까? 나는 청크로 출력을하는 방법을 이해하지 못한다. –

+1

@ Nicke 긴 문자열을 여러 개의 작은 문자열로 분리하고 독립적으로 작성하십시오. 또는 파이썬 문서의'csv' 모듈에서 문서를 읽으십시오. 단지 파일을 direclty로 전달하십시오. –

+0

답변과 의견에 감사드립니다. 빠른 해결책을위한 이번에는 Python 2.7에서 거의 작동하지 않는 도구 승인을 사용하여 MySQL과 내 조직을 동기화했습니다. 이제는 모든 텍스트 데이터 2008-2011에 편리한 Excel 파일이 있습니다 .-- 나는 또한 더 운이 좋을 수도 있습니다. Google에서 데이터 저장소 콘솔에 백업 및 내보내기 기능을 쉽게 추가 할 수 있으므로이를 프로그래밍 할 필요가 없습니다. –

1

당신은 아마 사용해야합니다 사전에 감사 내장 된 원격 API를 통해 모든 개체를 다운로드하고 CSV 형식으로 선택한 필드를 저장할 수 있습니다 bulkloader tool.

+0

너무 열심히 노력했기 때문에 나에게 적합하지 않다고 생각했습니다. 프로젝트 구성을 조사해야한다고 생각합니다. –

관련 문제