2012-09-04 5 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에 삽입하기 전에 행에 몇 개의 null 값 열을 추가하는 방법은 무엇입니까? 몇 가지 추가 데이터 열을 가질 다른 쿼리와 결합 할 것이고 데이터가 null 채워진 열로 정렬되기를 원하기 때문에이 작업을 수행해야합니다.CSV에 쓰기 전에 파이썬 커서에 열을 추가 하시겠습니까?

+0

관련없는 팁 : 당신은 루프 외부 CSV 작가의 생성을 이동해야합니다 :'작가 = csv.writer (인용, F = csv.QUOTE_MINIMAL)', 그런 식으로 새로운에게 writer 객체는 각 쓰기에 대해 만들어지지 않습니다. –

+0

@StevenRumbalski,'writerows'는 사용할 수있는 모든 데이터를 쓸 것이므로 루프가없고 오직 하나의 writer 객체 만 생성됩니다. –

+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