On Sep 12, 2010, at 12:28 PM, Kevin Mills wrote:
> Sorry about that. It was 4am this morning on my android so i wasnt thinking
> clearly yet.
>
> XMLType is an Oracle object type and library for storing and interacting with
> XML documents. getClobVal is a method of XMLType that returns an XML chunk
> of data as a CLOB instead of as an object. I have found that when I was
> using cx_Oracle directly it did not like when I tried to process an Object so
> I used getClobVal when I was trying to store an XML document retrieved from a
> query.
>
> For example when I was using cx_Oracle I would open a cursor and execute the
> following query to get my XML document or portion of it.
>
> cursor = cx_Oracle.Cursor(connection)
> cursor.execute("select object_value from xmlrepos")
> result_obj = cursor.fetchone()
>
> cursor.execute("select XMLType.getClobVal(object_value) from xmlrepos")
> result_clob = cursor.fetchone()
>
> result_obj gives me a cx_Oracle.OBJECT that I have yet to figure out what I
> could do with by itself and the result_clob gives me a cx_Oracle.LOB object
> that I take the str() value of to get my value.
>
> I was just curious if there was any ways to accomplish this with ORM. I saw
> that oracle has a CLOB colum in the dialects definition for Oracle, but was
> not sure how I could create a declarative object using a CLOB column that
> would allow me to create a custom query so that I can use XMLType.getClobVal
> to access it.
>
> Sorry if I am still not making any sense. I will attempt to give a better
> example of what I am looking to do when I get back.
>
> I will also try to create a custom UserDefinedType and see if I can go from
> there. I just have yet to have any luck to find anything that directly
> interacts with an XML object in the database without having to convert it to
> anohter data type.
If you're getting cx_oracle.LOB, it sounds like you would declare a Column
using CLOB as the type, and it would work.
As far as how to declare Columns using CLOBs, that's all basic SQLAlchemy
stuff, like here:
http://www.sqlalchemy.org/docs/orm/tutorial.html#creating-table-class-and-mapper-all-at-once-declaratively
where you see Column(String) you'd instead be saying Column(CLOB).
If you wanted to emit CREATE TABLE statements too, then we'd have to subclass
CLOB a bit but it sounds like you're not at that point yet.
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.