Oracle SQL中的Python空值
我有一个叫做 clob 的数据点,我需要用 .read()
方法把它加到一个列表里。不过,有时候这个字段是空的,所以在使用 .read()
之前,我需要先检查一下。
我已经找出了相关的部分。如果我直接打印数据,空的字段会显示为 none。用“不是空”这个代码似乎不对,但我不太确定该用什么。
for currentrow in data:
if currentrow[8] is not null:
Product = currentrow[8].read()
else:
Product = currentrow[8]
data = tuple([currentrow[0], currentrow[1], currentrow[2], currentrow[3], currentrow[4], currentrow[5], currentrow[6], currentrow[7], Product])
print data
2 个回答
3
在Python中,None
这个值被用作空值;数据库中的NULL
会被转换成这个对象:
if currentrow[8] is not None:
你可以把那行代码简化成只有两行:
for currentrow in data:
product = currentrow[8] and currentrow[8].read()
data = currentrow[:8] + (product,)
因为Python的and
运算符是短路运算,并且在布尔上下文中,None
被视为假值。除非你设置了行工厂,cx_Oracle
的游标会为每一行生成元组,你可以对这些元组进行切片,只选择前8个元素,然后再添加第9个元素,从而用这两个元素创建一个新的元组。
4
来自文档:
NoneType类型的唯一值是None。None常用来表示没有值,比如当默认参数没有传递给一个函数时。
所以你可以试试这个:
for currentrow in data:
if currentrow[8] is not None: <-- Change this from null to None
Product = currentrow[8].read()
else:
Product = currentrow[8]
data = tuple([currentrow[0], currentrow[1], currentrow[2], currentrow[3], currentrow[4], currentrow[5], currentrow[6], currentrow[7], Product])
print data