2012-09-04 31 views
0
#!/usr/bin/env python 
import csv 
import pyodbc 

out_file = "file.csv" 

conn = pyodbc.connect("DRIVER={driver};SERVER=servername;UID=user;PWD=pass;DATABASE=data") 

cursor = conn.execute("SELECT TOP 10 * FROM table") 

with open(out_file, 'w') as f: 
    print cursor 
    csv.writer(f, quoting=csv.QUOTE_MINIMAL).writerows(cursor) 

這是我的代碼截至目前,並按預期工作。我的問題是,在將數據插入CSV之前,如何向該行添加一些空值列?我需要這樣做,因爲我將把它與另一個將會有一些額外的數據列的查詢結合起來,並且我希望數據與空填充列對齊。在寫入CSV之前,將列追加到python光標?

+0

無關提示:你應該移動的CSV作家的創作外循環:'作家= csv.writer(F,引用= csv.QUOTE_MINIMAL)',這樣一個新的編寫器對象不會爲每個寫入創建。 –

+0

@StevenRumbalski,'writerows'將寫入所有可用的數據,所以沒有循環,只創建一個寫入器對象。 –

+0

@MarkRansom:我糾正了。 –

回答

2

如何:

writer = csv.writer(f, quoting=csv.QUOTE_MINIMAL) 
for row in cursor: 
    writer.writerow(list(row) + ['', '', '', '']) 
+0

OP應該在循環之外移動csv編寫器的創建:'writer = csv.writer(f,quoting = csv.QUOTE_MINIMAL)',這樣不會爲每次寫入創建一個新的編寫器對象。 –

+0

@StevenRumbalski,非常好的一點。我會編輯答案。 –

+0

我已經試過這個了,我得到'AttributeError:'pyodbc.Row'對象沒有屬性'extend'' – Samsquanch