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

How to check if LOB data is empty using cx_Oracle in Python?

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

我需要找到一种方法来检查 LOB 数据是否为空,从而绕过这个问题。

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

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

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

有什么想法吗?

非常感谢。

我终于找到了解决办法。原来LOB数据为空时游标returns NoneType引用。因此检查类型以避免访问 NoneType 引用就成功了。

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