如何在Python中使用cx_Oracle检查LOB数据是否为空?

时间:2018-03-29 16:25:56

标签: python cx-oracle

每当cx_Oracle游标尝试访问一个空的LOB数据记录时,它就会卡住并冻结脚本,就像访问不存在的表列一样。

我需要找到一种方法来检查LOB数据是否为空,以便绕过此问题。

cursor = db.cursor()
cursor.execute(SQL_QUERY)
for row in cursor:
    lob_data = row[1].read()

到目前为止,我已尝试获取游标行长度,但即使LOB数据为空,它也会返回实际长度。

我也尝试使用LOB对象的.fileexists()方法,尽管它也会冻结脚本执行。

有什么想法吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案。事实证明,当LOB数据为空时,游标返回NoneType引用。因此,检查类型以避免访问NoneType引用就可以了。

for row in cursor:
  if type(row[1]) is cx_Oracle.BLOB:
    lob_data = row[1].read()