数据库
首页 > 数据库> > python – 读取lob时的cx_Oracle MemoryError

python – 读取lob时的cx_Oracle MemoryError

作者:互联网

当尝试使用cx_Oralce从lob字段读取数据时,我收到“exceptions.MemoryError”.这个代码一直在工作,这个一个lob领域似乎太大了.

Example:
xml_cursor = ora_connection.cursor()
xml_cursor.arraysize = 2000
try:
    xml_cursor.execute(“select xml_data from xmlTable where id = 1”)
    for row_data in xml_cursor.fetchall():
        str_xml = str(row_data[0])  #this throws “exceptions.MemoryError”

解决方法:

是的,如果Python给出了MemoryError,那意味着只有一行中的那一个字段占用的内存比你拥有的多得多(当然很可能使用LOB).您必须将其切片并以块的形式获取(使用select dbms_lob.substr(xml_data,…重复)并将其提供给增量XML解析器(或将其写入文件,或者其他任何内容) ‘尝试使用那个多GB的LOB).DBMS_LOB是一个记录良好的Oracle提供的软件包,您可以在许多地方找到它的文档,例如here.

标签:python,cx-oracle
来源: https://codeday.me/bug/20190622/1260119.html