Writing Oracle Output to a File

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


Ralf Schönian schrieb:
> 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)
#     should be
       myRow = list(row)
       row = map(str,myRow)
>     writer.writerows(row)
> writer.close()
> 
> 
> Ralf Schoenian
> 




More information about the Python-list mailing list