Writing Oracle Output to a File

Ralf Schönian ralf at schoenian-online.de
Wed Dec 26 11:14:14 EST 2007


t_rectenwald schrieb:
> Hello,
> 
> I attempting to execute an Oracle query, and write the results to a
> file in CSV format.  To do so, I've done the following:
> 
> import cx_Oracle
> db = cx_Oracle.connect('user/pass at DBSID')
> cursor = db.cursor()
> cursor.arraysize = 500
> cursor.execute(sql)
> result = cursor.fetchall()
> 
> The above works great.  I'm able to connect to the database and print
> out the results as a list of tuples.  Here is where I get lost.  How
> do I work with a "list of tuples?"  My understanding is that a "list"
> is basically an array (I don't come from a Python background).  Tuples
> are a "collection of objects."  So, if I do...
> 
> print result[0]
> 
> I get the first row of the query, which would make sense.  The problem
> is that I cannot seem to write tuples to a file.  I then do this...
> 
> csvFile = open("output.csv", "w")
> csvFile = write(result[0])
> csvFile.close
> 
> This generates an exception:
> 
> TypeError: argument 1 must be string or read-only character buffer,
> not tuple
> 
> So, I'm a bit confused as to the best way to do this.  I guess I could
> try to convert the tuples into strings, but am not sure if that is the
> proper way to go.  Any help would be appreciated.  I've also seen a
> csv module out there, but am not sure if that is needed in this
> situation.
> 
> Best Regards,
> Tom

Hi,

have a look at the csv Module: http://docs.python.org/lib/csv-examples.html

Just iterate over your result.

# Untested
import csv
writer = csv.writer(open("some.csv", "wb"))

for row in result:
     row = map(str,row)
     writer.writerows(row)
writer.close()


Ralf Schoenian







More information about the Python-list mailing list