2012-05-09 36 views
11

Dưới đây là những gì tôi hiện có:Làm cách nào để xuất sqlite sang CSV bằng Python mà không bị định dạng dưới dạng danh sách?

conn = sqlite3.connect(dbfile) 
conn.text_factory = str ## my current (failed) attempt to resolve this 
cur = conn.cursor() 
data = cur.execute("SELECT * FROM mytable") 

f = open('output.csv', 'w') 
print >> f, "Column1, Column2, Column3, Etc." 
for row in data: 
    print >> f, row 
f.close() 

nó tạo ra một tập tin CSV với sản lượng mà trông như thế này:

Column1, Column2, Column3, Etc. 
(1, u'2011-05-05 23:42:29',298776684,1448052234,463564768,-1130996322, None, u'2011-05-06 04:44:41') 

Tôi không muốn các hàng được đặt trong ngoặc đơn và cũng không có dấu ngoặc kép hay 'u' trước chuỗi. Làm thế nào để có được nó để viết các hàng để csv mà không có tất cả điều này? Cảm ơn,

Trả lời

21

Điều bạn hiện đang làm là in ra biểu diễn chuỗi python của một bộ tuple, tức là giá trị trả lại là str(row). Điều đó bao gồm các dấu ngoặc kép và 'u và dấu ngoặc đơn và vân vân.

Thay vào đó, bạn muốn dữ liệu được định dạng đúng cho tệp CSV. Vâng, hãy thử csv module. Nó biết làm thế nào để định dạng mọi thứ cho các tập tin CSV, không ngạc nhiên là đủ.

with open('output.csv', 'wb') as f: 
    writer = csv.writer(f) 
    writer.writerow(['Column 1', 'Column 2', ...]) 
    writer.writerows(data) 
+0

Điều đó đã làm điều đó, cảm ơn! – Dan

Các vấn đề liên quan