如何使用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()
每次 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()