admin管理员组文章数量:1794759
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) # 批量数据插入 connmit() print('导入成功!') except cx_Oracle.Error as err: print(err) # 5.关闭游标 cursor.close() # 6.关闭连接 conn.close()现在想想这里犯了一个主观出错,导致本来已经发现问题,却没能及时解决,反而忽略了,以后有疑问一定要去查个清楚,很有可能就是问题关键所在,不能帮问题找理由!!!
之前在校期间一直用的是R,现在转学python,发现还是要将一门语言的基础知识、基本运行规则,弄懂弄明白,才能更加灵活使用。
本文标签: 报错数据库PythonoracleTypeError
版权声明:本文标题:python 导入Oracle数据库报错TypeError: expecting string or bytes object解决 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686506605a75225.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论