2016-06-17 9 views
0

与えられたSQL文に基づいて、私はthefollowing機能をCSVに、データベースから抽出します。パイソン - 列名のcx_oracle印刷可変量

私は、ファイルの先頭の列に書くことができますどのように
def extract_from_db(): 
    with open('myfile.csv','w') as outfile: 
     for row in cursor: 
      outfile.write(str(row[0])+";"+str(row[1])+";"+str(row[2])+";"+str(row[3])+";"+str(row[4])+";"+str(row[5]) 
       +";"+str(row[6])+";"+str(row[7])+";"+str(row[8])+";"+str(row[9])+";"+str(row[10])+";"+str(row[11])+";"+str(row[12]) 
       +";"+str(row[13])+";"+str(row[14])+"\n") 

私はそれをハードコードする必要はありませんので、列の可変量の名前?また、ハードコーディングされた連結はかなり醜いです。

答えて

1

あなたはdescription

desc = cursor.description 

機能を使用することができます。これは、7つの項目の配列の配列を返し、私はまた、CSVファイルへのあなたの書き込みを行うにはパンダを使用することをお勧めします

for seq in desc: 
    print seq[0] 

から列名を取得することができます。

1

Ebrahim Jackoetは、cursor.descriptionを使用してクエリから列名を取得できることをすでに述べています。ただし、処理する行数が非常に多くない場合は、csv moduleが組み込まれており、行を簡単に書き込むことができます。また、以下の

例を引用し、必要なすべてを処理します。

import csv 

with open("myfile.csv", "w") as outfile: 
    writer = csv.writer(outfile, delimiter = ";") 
    for row in cursor: 
     writer.writerow(row)