【问题标题】:cx_Oracle MemoryError when reading lob读取 lob 时出现 cx_Oracle MemoryError
【发布时间】:2010-11-14 00:09:12
【问题描述】:

当尝试使用 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 cx-oracle


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-05-26
      • 1970-01-01
      • 2016-07-04
      • 1970-01-01
      • 2015-12-14
      • 2018-10-09
      • 2016-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多