每当cx_Oracle游标尝试访问一个空的LOB数据记录时,它就会卡住并冻结脚本,就像访问不存在的表列一样。
我需要找到一种方法来检查LOB数据是否为空,以便绕过此问题。
cursor = db.cursor()
cursor.execute(SQL_QUERY)
for row in cursor:
lob_data = row[1].read()
到目前为止,我已尝试获取游标行长度,但即使LOB数据为空,它也会返回实际长度。
我也尝试使用LOB对象的.fileexists()方法,尽管它也会冻结脚本执行。
有什么想法吗?
非常感谢。
答案 0 :(得分:0)
我终于找到了解决方案。事实证明,当LOB数据为空时,游标返回NoneType引用。因此,检查类型以避免访问NoneType引用就可以了。
for row in cursor:
if type(row[1]) is cx_Oracle.BLOB:
lob_data = row[1].read()