def insert_scores(): Database.db.drop_collection(Database.db.scores) Database.db.drop_collection(Database.db.country_scores) # drop index for fast insertion Database.db.scores.drop_indexes() Database.db.scores.ensure_index("_id") Database.db.country_scores.drop_indexes() Database.db.country_scores.ensure_index("_id") questions = list(Database.db.questions.find()) # Need to cast into list to not run into end of cursor print len(questions), 'questions found in the db' images = Database.db.gifs.find() image_ids = [str(e['_id']) for e in images] chunk_size = 100 for image_id_chunk in chunks(image_ids, chunk_size): result = Database._add_score(image_id_chunk, questions, countries) print 'Processing %s images with %s questions' % (chunk_size, len(questions)) print 'Finished processing', len(image_ids), 'inserts'