基本的に、いくつかの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