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

本文记录了解决使用Python向Oracle数据库插入数据时遇到TypeError: expecting string or bytes object错误的过程。通过查找空值类型并将其从float转换为空字符串,最终成功解决了问题。
部署运行你感兴趣的模型镜像

**

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,发现还是要将一门语言的基础知识、基本运行规则,弄懂弄明白,才能更加灵活使用。

您可能感兴趣的与本文相关的镜像

Anything-LLM

Anything-LLM

AI应用

AnythingLLM是一个全栈应用程序,可以使用商用或开源的LLM/嵌入器/语义向量数据库模型,帮助用户在本地或云端搭建个性化的聊天机器人系统,且无需复杂设置

在安装 `diff-gaussian-rasterization` 时,如果遇到 `TypeError: expected string or bytes-like object` 的报错,通常是由于构建过程中某些依赖或路径处理异常所导致的。以下是一些可能的解决方法: 1. **确保环境依赖正确安装** 检查是否安装了必要的构建工具和库,例如 `CMake`、`CUDA Toolkit` 以及 `PyTorch` 开发版本。某些情况下,缺少必要的依赖可能导致构建失败。 ```bash pip install torch torchvision ``` 2. **更新 pip 和 setuptools** 有时,旧版本的 `pip` 或 `setuptools` 可能会导致路径解析错误。更新到最新版本可能会解决此类问题。 ```bash pip install --upgrade pip setuptools wheel ``` 3. **使用正确的 diff-gaussian-rasterization 版本** 确保从官方推荐的版本进行安装,避免使用可能存在问题的第三方 fork 或过时版本。可以使用如下命令直接安装指定提交的版本: ```bash pip install git+https://github.com/graphdeco-inria/diff-gaussian-rasterization.git@9c5c2028f6fbee2be239bc4c9421ff894fe4fbe0 ``` 4. **检查 CUDA 和 PyTorch 兼容性** 确保使用的 PyTorch 版本与当前 CUDA 版本兼容,并且与 `diff-gaussian-rasterization` 所需的版本一致。 5. **清理缓存并重新安装** 有时,`pip` 缓存可能导致安装异常。可以尝试清除缓存后重新安装: ```bash pip cache purge pip install --no-cache-dir git+https://github.com/graphdeco-inria/diff-gaussian-rasterization.git@9c5c2028f6fbee2be239bc4c9421ff894fe4fbe0 ``` 6. **检查系统路径和权限问题** 如果路径中包含非 ASCII 字符或空格,也可能导致此类错误。尝试在路径简单且标准的环境中安装。此外,确保安装路径具有写入权限。 7. **使用 conda 环境隔离安装** 使用 `conda` 创建一个干净的虚拟环境,避免与其他包产生冲突。 ```bash conda create -n gaussian_env python=3.9 conda activate gaussian_env pip install git+https://github.com/graphdeco-inria/diff-gaussian-rasterization.git@9c5c2028f6fbee2be239bc4c9421ff894fe4fbe0 ``` 通过以上方法,通常可以解决 `TypeError: expected string or bytes-like object` 的问题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值