如何修复AttributeError:当数据有空白单元格时,'NoneType'对象没有属性

时间:2016-05-13 16:09:11

标签: python-2.7 cx-oracle nonetype

有人可以提供帮助,以下代码可能会失败吗?产生了一个AttributeError:'NoneType'对象没有属性'strftime'。

我检查了数据&一些空白细胞现在出现在Cols 5中,以前从未出现过。

我可以对下面的脚本做一个简单的修复吗?

connection = cx_Oracle.connect('User','PassWord,'adhoc_serv')
cursor = connection.cursor()
SQL="SELECT * FROM CAT34"
cursor.execute(SQL)
filename = r"C:\Projects\CAT34\SQL_Export\CAT34.csv"

with open(filename, "wb") as fout:
writer = csv.writer(fout)
writer.writerow([i[0] for i in cursor.description ]) # heading row

for row in cursor.fetchall():
    cols = list(row)
    cols[2] = cols[2].strftime("%d/%m/%Y")
    cols[5] = cols[5].strftime("%d/%m/%Y")
    writer.writerow(cols)

1 个答案:

答案 0 :(得分:0)

当检索的值为null时,cx_Oracle返回None。如果你想避免这种情况,你可以这样做:

cols[2] = cols[2] and cols[2].strftime("%d/%m/%Y")

这将给你一个None(当值为null时)或者如果它不是null则编码为字符串的日期。

如果你想要一个""而不是无你可以做到这一点

cols[2] = cols[2] and cols[2].strftime("%d/%m/%Y") or ""

最后一个选项:您可以简单地调整查询,以便它执行此操作:

select to_char(datecol1, 'dd/mm/YYYY') from CAT34;

这会将日期作为字符串而不是日期值返回。

希望其中一个选项可以满足您的需求!