0
基本上我想從幾個SQL查詢創建一個csv文件。我至今:在python中爲單個csv編寫一系列SQL查詢
import pyodbc
import csv
import itertools
conn = pyodbc.connect("user")
cur = conn.cursor()
sql_queries = ['query_1', 'query_2', 'query_3']
columns = []
rows = []
for query in sql_queries:
cur.execute(query)
columns.append([i[0] for i in cur.description])
rows.append(cur.fetchall())
flat_columns = list(itertools.chain.from_iterable(columns))
fp = open('temp_file.csv', 'w')
my_file = csv.writer(fp)
my_file.writerow(flat_columns)
for row in rows:
my_file.writerows(row)
fp.close()
的flat_columns正確打印在上面的各種查詢的所有列標題,但隨後行打印順序(即不正確的頭下,除第一個查詢)的。有沒有辦法讓它們在適當的標題下水平排列?查詢產生不同數量的行和列。
EDIT 例如,讓我們說QUERY1產生2列(headers1-2)和QUERY2和QUERY3每生產1柱(分別header3和header4),其中形式的QUERY1產生的結果 'XX',QUERY2「YY '和query3'zz'。這是我目前得到:
header1 header2 header3 header4
xx xx
xx xx
xx xx
yy
yy
zz
而這正是我想要的:
header1 header2 header3 header4
xx xx yy zz
xx xx yy
xx xx
看到一些數據是當前和期望的結果,真的很不錯。 – Parfait
添加了一些插圖 – user3059201
您可以在將數據保存到本地之前放置'print'語句,並向我們展示爲'flat_columns'打印的內容。基本上'print(flat_columns)'在你保存之前。 – Abdou