python 导入Oracle数据库报错TypeError: expecting string or bytes object解决

**

python 导入Oracle数据库报错TypeError: expecting string or bytes object解决

**
第一次使用博客,之后打算开始记录当天python使用中学习到的新的知识点,今天在学习如何使用python将数据插入Oracle时,总是遇到ypeError: expecting string or bytes object这个错误,网上搜索了好多内容,关于这个错误的很少,之后经过各种尝试,初步猜测是导入的数据中字符类型有误,有一个博客说是空值nan的原因,于是用如下代码将空值替换

data2 = data1.replace('nan',''),

替换后查看data2,结果还是显示为nan,
在这里插入图片描述
就自以为python对于空值都会直接显示nan,直接运行
cursor.executemany(v_sql, data2)
还是报错就以为不是空值的原因,就又接着百度了,找了许久,无意间将data展开发现空值的字符类型竟然是float,立马知道问题出在哪里了,于是我又去百度如何空值替换,最终将空值替换了,再次运行,总算成功了,代码如下

index = [':%s' % i for i in range(1, len(data.columns.values) + 1)]
v_sql = f'insert into {table_name} values({",".join(index)})'
data1 = data.where(data.notnull(), '')  # python中空值nan字符类型为float,插入数据库报错,故需改为''
data2 = [tuple(r) for r in data1.values.tolist()]  # data1数据类型为dataFrame,需改为包含元组的列表才能插入数据库
try:
    cursor.executemany(v_sql, data2)  # 批量数据插入
    conn.commit()
    print('导入成功!')
except cx_Oracle.Error as err:
    print(err)
 # 5.关闭游标
cursor.close()
 # 6.关闭连接
conn.close()

现在想想这里犯了一个主观出错,导致本来已经发现问题,却没能及时解决,反而忽略了,以后有疑问一定要去查个清楚,很有可能就是问题关键所在,不能帮问题找理由!!!

之前在校期间一直用的是R,现在转学python,发现还是要将一门语言的基础知识、基本运行规则,弄懂弄明白,才能更加灵活使用。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值