2013-09-16 3 views
4

Ok, поэтому у меня есть база данных с именем cars.db, который имеет таблицу == инвентаризации,Запись в формате CSV из sqlite3 базы данных в Python

Inventory содержит в основном

('Ford', 'Hiluz', 2), 
    ('Ford', 'Tek', 6), 
    ('Ford', 'Outlander', 9), 
    ('Honda', 'Dualis', 3), 
    ('Honday', 'Elantre', 4) 

Я тогда написал что чтобы изменить это на csv, однако, я не могу это обработать, в некоторых случаях я получаю материал для печати, но это не так, и когда я пытаюсь исправить это, ничего не печатает. Любые предложения, чтобы меня подвести?

#write table to csv 

import sqlite3 
import csv 

with sqlite3.connect("cars.db") as connection: 
    csvWriter = csv.writer(open("output.csv", "w")) 
    c = connection.cursor() 

    rows = c.fetchall() 

    for x in rows: 
     csvWriter.writerows(x) 
+0

'.writerows' как имя предлагает записывать все строки и вы хотите' .writerow' (no 's' в конце), который пишет одну строку. Также см. Ответ Виктора. – freakish

ответ

7

Вы просто должны сделать:

rows = c.fetchall() 
csvWriter.writerows(rows) 

Если причина итерацию по строкам, потому что вы wan't к препроцессировать их перед записью их в файл, а затем использовать метод writerow:

rows = c.fetchall() 
for row in rows: 
    # do your stuff 
    csvWriter.writerow(row) 
+0

Отлично. Это определенно помогло. Я также забыл, что мне нужно добавить метод SELECT, чтобы захватить данные, то есть «code' c.execute (« SELECT * FROM inventory »). Тогда в сочетании с вашим предложением это сработало. благодаря – SScode

Смежные вопросы