4

当尝试使用 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”
4

1 回答 1

5

是的,如果 Python 给出 MemoryError 这意味着只有一行中的一个字段占用的内存比你拥有的多(当然,很可能使用 LOB)。您必须将其切分并以块的形式(select dbms_lob.substr(xml_data, ...重复)并将其提供给增量 XML 解析器(或将其写入文件,或者您尝试使用该多 GB 执行的任何操作)高球)。 DBMS_LOB是一个有据可查的 Oracle 提供的包,你可以在很多地方找到它的文档,例如这里

于 2009-07-25T16:30:27.873 回答