python如何操作oracle数据库_Python 操作 Oracle 数据库

本文介绍了在Windows环境下,使用Python 32位版本操作Oracle 64位数据库时遇到的问题及解决方案。首先,通过下载cx_Oracle库并尝试安装,但因Python和Oracle客户端版本不匹配导致错误。解决方案是将64位Oracle客户端的oci.dll等相关文件复制到Python的site-packages目录下。最后,解决了运行时出现的中文乱码问题,通过设置encoding和nencoding参数为UTF-8。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

操作系统:Window 10 64 位

RPA: IS-RPA 2020.2.0

查看 IS-RPA Python 版本

由下图可知:

IS-RPA 安装在 E 盘,Python 解释器所在的目录在 IS-RPA2020/Python 下

Python 的版本是 Python 3..6.4  32 位

30032631ff602418e5e6967a28c861f2.png

下载 cx_Oracle 第三方库

点击这里下载:下载链接

cpxx,表示适用于 Python 的版本为  xx

带有 win32 后缀是 32 位

带有 amd64 后缀是 64 位

举个栗子:cx_Oracle‑7.3.0‑cp36‑cp36m‑win32.whl  表示适用于 Python3.6 版本, 32 位

5acdf919709b0c8645d63c3aa67a5a1b.png

安装 cx_Oracle 第三方库

# 安装

1.打开 PowerShell

2. 进入 E:\Program Files\IS-RPA2020\Python\Scripts> (这里 IS-RPA 安装在 E 盘)

3. 输入以下命令(这里 Oracle 第三方库的位置在 l D:\download\) PS E:\Program Files\IS-RPA2020\Python\Scripts> ..\python.exe .\pip.exe install D:\download\cx_Oracle-7.3.0-cp36-cp36m-win32.whl

注意:选择对应 Python 版本下载 cx_oracle 第三库

测试连接 Python 第三方库

conn = cx_Oracle.connect('szxy/123@localhost:1527/orcl') cursor = conn.cursor() result = cursor.execute('''select * from DEPT''') data = cursor.fetchall() print(data)

运行发生异常

cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 32-bit Oracle Client librar: "E:\Oracle\product\11.2.0\dbhome_1\bin\oci.dll is not the correct architecture". See https://oracle.github.io/odpi/doc/installation.html#windows for help

发生异常原因是:小编安装是 Oracle 版本是 Oracle 11g 64 位的,而 Python 的版本是 32 位的。

解决方案

把 instantclient-basic-nt-11.2.0.4.0.zip 解压, 然后将 instantclient-basic-nt-11.2.0.4.0 目录下的  oci.dll、oraocci11.dll、oraociei11.dll 拷贝到 E:\Program Files\IS-RPA2020\Python\Lib\site-packages 目录下

299295a7cfb48be10da4d4240973ecc9.png

重新运行

6b5ac010efbd73e080d7d4a00b1978a0.png

结果集中文乱码

# 原来的 conn = cx_Oracle.connect(g_conn_str,) # 修改后的 conn = cx_Oracle.connect(g_conn_str, encoding = "UTF-8", nencoding = "UTF-8")

再次运行

b3c63686960c625ce5c108c8f34fb44a.png

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值