En Tue, 03 Mar 2009 13:33:19 -0200, Loredana <loredana.p...@gmail.com> escribió:

On Mar 3, 1:01 pm, Loredana <loredana.p...@gmail.com> wrote:
Hi,

I need to read CLOB field type (it is long text)

if I use this code:

curs.execute(sqlstr)
rows['name_of_columns']     =   name_of_columns
rows['data']                         =   curs.fetchall()

it returns me this values:

test = {'name_of_columns': ['FILENAME', 'CRONTIME', 'SHORT_TAIL',
'LONG_TAIL'], 'data': [('dd','asdds','adadsa',<cx_Oracle.LOB object at
0x2a955bc230>')]}

any ideas?

Thanks

Lory

Hi all,
I success to read one row with the following code:

        curs.execute(sqlstr)
        name_of_columns =   []
        for fieldDesc in curs.description:
            name_of_columns.append(fieldDesc[0])
        for rows_ in curs.fetchone():
            try:
                print rows_.read()
            except:
                print "except. ",rows_

but if I try with fetchmany() it doesn't work
any ideas?

cx_Oracle implements DBAPI 2.0, then you should follow the general guidelines in the specification:
http://www.python.org/dev/peps/pep-0249/

LOBs are an extension to DBAPI -- see http://cx-oracle.sourceforge.net/html/lob.html and carefully read the second note:

"""Note: Internally, Oracle uses LOB locators which are allocated based on the cursor array size. Thus, it is important that the data in the LOB object be manipulated before another internal fetch takes place. The safest way to do this is to use the cursor as an iterator. In particular, do not use the fetchall() method. The exception “LOB variable no longer valid after subsequent fetch” will be raised if an attempt to access a LOB variable after a subsequent fetch is detected."""

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to