2015-02-26 2 views
2

Я пытаюсь записать некоторые данные в формате CSV, используя извлеченные данные из MongoDB с помощью Mongopy. В настоящее время заголовки в настоящее время установлены, и проблема в том, что фактические данные не вставляются в файл CSV. вот фрагмент кода:Запись данных в файл формата CSV

from pymongo import MongoClient 
import csv 
import os 

conn = pymongo.MongoClient() 

db = conn.clixster_dev 

cursor = db.channels.find({},{'_id':0 , 'company-reg-no':0, 'isdel':0 , 'last_off':0 , 'last_on':0 , 'online':0 , 'password':0 , 'psotcode':0 , 'state':0 , 'subagent':0}) 


outfile = open("asdxk.csv", "w") 

# get a csv writer 
writer = csv.writer(outfile) 

# write header 
writer.writerow(['postcode', 'upline', 'cit_state', 'contact_person', 'contact_no','nominal_level', 'credit', 'level', 'account_holder', 'merchantid', 'email', 'bank', 'reg_date' ,'address','acc_no','company_name']) 

# write data 
[ writer.writerow(x) for x in cursor ] 

# close file 
outfile.close() 

Любое рассмотрение ценится,

+0

Почему это не запись в файл. Добавить блок catch try в операции с файлами. Проверьте, не возникало ли каких-либо исключений при записи данных. Просто отлаживайте код –

ответ

1

Вы должны использовать csv.DictWriter вместо csv.writer, потому что ваши результаты запроса словари. Вам также нужно указать ваши проекции полей в вашем запросе. Измените свой запрос.

cursor = db.channels.find({},{'_id':0, 'postcode': 1, 'upline': 1, 'cit_state': 1, 'contact_person': 1, 'contact_no': 1,'nominal_level': 1, 'credit': 1, 'level': 1, 'account_holder': 1, 'merchantid': 1, 'email': 1, 'bank': 1, 'reg_date': 1 ,'address': 1,'acc_no': 1,'company_name': 1}) 

и используйте with Заявление о

with open('asdxk.csv', 'w') as outfile: 
    fields = ['postcode', 'upline', 'cit_state', 'contact_person', 'contact_no','nominal_level', 'credit', 'level', 'account_holder', 'merchantid', 'email', 'bank', 'reg_date' ,'address','acc_no','company_name'] 
    writer = csv.DictWriter(outfile, fieldnames=fields) 
    writer.writeheader() 
    for x in cursor: 
     writer.writerow(x) 
Смежные вопросы