Python 从Oracle DB下载数据并导出到csv文件

Python 从Oracle DB下载数据并导出到csv文件,python,database,oracle,Python,Database,Oracle,我连接到某个Oracle数据库,并试图将数据导出到csv文件。下面是我的Python代码- import jpype import jaydebeapi import csv # Assuming I already have established a connection - # Connection variable is Conn Curs = Conn.cursor() Curs.execute("select * from Table") Data = lis

我连接到某个Oracle数据库,并试图将数据导出到csv文件。下面是我的Python代码-

import jpype
import jaydebeapi
import csv

# Assuming I already have established a connection -
# Connection variable is Conn

Curs = Conn.cursor()
Curs.execute("select * from Table")
Data = list(Curs.fetchall())

with open("mycsvfile.csv", "wb") as f:
    w = csv.DictWriter(f, Data[0].keys())
    w.writerow(dict((fn,fn) for fn in Data[0].keys()))
    w.writerows(Data)
但当我运行上面的代码时,我得到的错误是-

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
AttributeError: 'tuple' object has no attribute 'keys'
回溯(最近一次呼叫最后一次):
文件“”,第2行,在
AttributeError:“元组”对象没有属性“键”
你能帮我找到一条出路吗


非常感谢您的帮助

您可以使用sqlplus或SQLcl轻松生成csv:


我正在使用这段代码使用Python创建一个csv文件(在我的例子中是带有标题的)。我认为您应该试试
cx\u Oracle
,对我来说,这是从Python与Oracle数据库交互的最佳方式

import os
import sys
import cx_Oracle 

db = cx_Oracle.connect('user/pass@host:port/service_name')
SQL = "select column1 , column2 , .... , columnn from table"
print(SQL)
cursor = db.cursor()
f = open("C:\myfile.csv", "w")
writer = csv.writer(f, lineterminator="\n", quoting=csv.QUOTE_NONNUMERIC)
r = cursor.execute(SQL)

#this takes the column names
col_names = [row[0] for row in cursor.description]

writer.writerow(col_names)

for row in cursor:
   writer.writerow(row)
f.close()

谢谢但是,我希望有一些方法可以直接将数据从Python工作区导出为CSV。对于将来使用SQL*Plus的读者,请参阅。通过这段代码,我得到的错误为-cx_Oracle.DatabaseError:DPI-1047:找不到64位Oracle客户端库:“dlopen(libclntsh.dylib,1):找不到映像”。请参阅以获取帮助可能您的笔记本电脑中没有安装正确的即时客户端版本通常我看到CSV用于转储大量行,因此使用cursor.arraysize和cursor.prefetchrows设置可以提高性能,请参阅。