Как прочитать cx_Oracle.OBJECT с типом cx_Oracle.ObjectType SYS.XMLTYPE?

Я пытаюсь прочитать содержимое столбца XMLType из Oracle с помощью cx_Oracle, но не понимаю.

>>> row
(318, 379, 1, <cx_Oracle.OBJECT object at 0xef21ea0>)
>>> col = row[3]
>>> print col
<cx_Oracle.OBJECT object at 0xef21ea0>
>>> print col.type
<cx_Oracle.ObjectType SYS.XMLTYPE>

Как я могу прочитать содержимое cx_Oracle.OBJECT с типом cx_Oracle.ObjectType SYS.XMLTYPE?


person Leonardo Andrade    schedule 03.01.2014    source источник
comment
Чего именно вы хотите добиться? Я не знаком с cx_Oracle. Но с точки зрения чистого OCI API поддержка XML в Oracle довольно шизофренична. Если вы хотите работать с типом данных SYS.XMLTYPE как с настоящим XML, вы должны использовать библиотеку с именем libxml.a (вместе с библиотекой драйвера OCI: libclnt.so). Эта библиотека libxml.a НЕ включена в InstantClient и даже НЕ является частью установки сервера Oracle XE. Вероятно, вам следует загрузить и установить полный толстый клиент Oracle, а затем скомпилировать этот драйвер cx_Oracle с этим полным клиентом.   -  person ibre5041    schedule 03.01.2014
comment
Большое спасибо за ваш комментарий, @Ivan. Думаю проблема именно в этом. Итак, я предпочел использовать этот (oracle. com/technetwork/articles/dsl/) решение [используя select dbms_xmlgen.getxml('%s') из двойного], чем компилировать конкретную версию InstantClient.   -  person Leonardo Andrade    schedule 13.01.2014


Ответы (1)


Как сказано в комментарии Ивана, решение состоит в том, чтобы скомпилировать cx_Oracle с libxml.a. В качестве обходного пути я использовал решение, предложенное на следующей странице, и прочитал все содержимое в виде XML.

http://www.oracle.com/technetwork/articles/dsl/mastering-oracle-python-xml-1391344.html

person Leonardo Andrade    schedule 13.01.2014