2012-04-21 7 views
2

SQLalchemy를 사용하여 200MB의 csv 파일을 읽으려고합니다. 각 행에는 약 30 개의 열이 있는데, 아래 코드를 사용하여 8 개의 열만 사용합니다. 그러나 코드가 정말 느리게 실행됩니다! 이것을 향상시킬 수있는 방법이 있습니까? 지도/목록 이해력 또는 기타 기술을 사용하고 싶습니다. 당신이 말한대로, 나는 초보자입니다. 당신의 도움을 주셔서 감사합니다.SQLalchemy를 사용하여 큰 파일 읽기

for ddata in dread:   
    record = DailyData() 
    record.set_campaign_params(pdata) #Pdata is assigned in the previous step   
    record.set_daily_data(ddata) #data is sent to a class method where only 8 of 30 items in the list are used  
    session.add(record) 
    session.commit() #writing to the SQL database. 

답변

4

모든 레코드에 커밋하지 마십시오. 커밋 또는 단지 1,000 정도 플러시 :

for i, data in enumerate(csv_stuff): 
    rec = MyORMObject() 
    rec.set_stuff(data) 
    session.add(rec) 
    if i % 1000 == 0: 
     session.flush() 
session.commit() # flushes everything remaining + commits 

을 그 여전히 당신에게 문제를주고이라면 몇 가지 기본적인 프로파일 링을 수행 How can I profile a SQLAlchemy powered application?

+0

당신을 감사에 내 게시물을 참조! 이로 인해 속도가 크게 향상되었습니다. 또한 Profiler를 사용하여 SQLalchemy 최적화에 대해 더 배우게 될 것입니다. – user1347835

관련 문제