Python读取Oracle数据库方法

最近给一台新电脑做python读取Oracle数据库的脚本时,遇到的问题,在这里总结一下。

需要的软件/包等

python

这个就不用多说了,我用的是3.8版本,其他版本按照我的方法参考就行

cx_Oracle

这个是Oracle提供的官方Python模块cx_Oracle,我的是8.3.0版本,安装方法:

pip install cx_Oracle

Oracle Instant Client

这个是重点,因为只在python中安装cx_Oracle,会报错,内容为:

cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "The specified module could not be found". See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help

这个错误表明你的Python环境无法找到64位的Oracle客户端库。这可能是由于你的系统上没有安装64位的Oracle客户端,或者Python无法找到这个库。
实际上就是因为这台电脑没有Oracle客户端,如果安装一个Oracle数据库会非常麻烦,占空间不说,还会影响电脑本身的运行,所以,官方出了Oracle Instant Client,只要几十兆,无需安装,直接解压缩就可以使用的包

Oracle Instant Client下载

在官网下载即可:Oracle Instant Client下载 这个下载地址是win64位系统的,具体版本找自己适合的就行
在这里插入图片描述
注意:Oracle 的标准客户端-服务器网络互操作性允许不同版本的 Oracle 客户端库之间的连接和甲骨文数据库。 总之,Oracle Client 21 可以连接到 Oracle Database 12.1 或更高版本。 Oracle 客户端 19、18 和 12.2 可以连接到 Oracle 数据库 11.2 或 大。Oracle Client 12.1 可以连接到 Oracle Database 10.2 或 大。Oracle Client 11.2 可以连接到 Oracle Database 9.2 或更高版本。这 创建连接的技术限制可能更灵活。为示例 Oracle 客户端 12.2 可以成功连接到 Oracle 数据库 10.2。

因为我链接到的数据库用 12.1.0.2.0版本就可以,我就以此版本为例讲解
点击12.1.0.2.0,选择第一个进行下载,第一个是标准版,第二个是标准精简版,我用的是第一个,下载的压缩包大概69M,注意这里会提示登录,没有Oracle账号的自己注册一个就行
在这里插入图片描述

Oracle Instant Client解压缩

将下载的压缩包放到你想放到的文件夹下面,我方的是C:\ProgramData\Oracle 里面,并解压缩到当前文件夹即可,解压出来的文件夹名称为instantclient_12_1 ,记住这个路径,一会需要用。
注意,解压缩即可,不需要再有什么安装之类的步骤,Oracle Instant Client就是免安装的。
在这里插入图片描述
到这里,正常需要配置下环境变量,不过因为我公司的电脑具有权限管理,我没有管理员权限,无法配置环境变量,所以需要在python代码中完成这个功能,下面会进行讲解
到这里Oracle Instant Client部分完成

python代码编写

具体的代码编写,可以看下我另一篇文章:Python使用cx_oracle提取表数据,并且转存到MySQL数据库

如果你完成 Oracle Instant Client 部分,并配置了环境变量,可以直接参考上述文章的代码,但是,如果你也没有配置环境变量,需要在代码中做一个小修改,如果不做这个修改,直接运行的话会报错,就是刚才说的没有Oracle客户端,现在,来更改下代码

代码的第一行就是引入cx_Oracle 包,只要在后面加上下面的代码即可

import cx_Oracle as cx
cx.init_oracle_client(lib_dir=r"C:\ProgramData\Oracle\instantclient_12_1")

简单解释下,就是cx_Oracle 连接的是刚才解压缩的Oracle Instant Client,这样,代码就可以正常运行,读取Oracle数据库了

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,我们可以使用第三方库cx_Oracle读取Oracle数据库。首先,需要安装cx_Oracle库,并确保已经设置好了Oracle客户端。接下来,可以按照以下步骤读取Oracle数据库: 1. 首先,导入必要的库: ```python import cx_Oracle ``` 2. 使用cx_Oracle.connect()函数连接到Oracle数据库,需要提供数据库的用户名、密码和连接字符串: ```python connection = cx_Oracle.connect('username', 'password', 'connection_string') ``` 请将'username'替换为您的Oracle数据库用户名,'password'替换为您的密码,'connection_string'替换为正确的连接字符串。 3. 创建一个游标对象,用于执行SQL查询: ```python cursor = connection.cursor() ``` 4. 使用cursor.execute()方法执行您的SQL查询。例如,如果您要查询名为"employees"的表中的所有记录,可以执行以下代码: ```python cursor.execute('SELECT * FROM employees') ``` 5. 使用cursor.fetchall()方法获取查询结果。例如,如果您想将查询结果存储在一个变量中: ```python results = cursor.fetchall() ``` 现在,您可以使用results变量来处理查询结果。 6. 最后,不要忘记关闭游标和数据库连接: ```python cursor.close() connection.close() ``` 这样就完成了从Oracle数据库读取数据的过程。请确保您已经按照上述步骤正确安装和配置了cx_Oracle库,并提供了正确的数据库连接信息。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [PythonOracle数据库中获取数据——fetchall(),fetchone(),fetchmany()函数功能分析](https://blog.csdn.net/qq_28268527/article/details/128629153)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [使用Python代码调用命令行来执行MySQL数据库备份和恢复操作](https://download.csdn.net/download/weixin_44609920/88222336)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值