Python连接Oracle提示--cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 32-bit Oracle Client library

最初我的Python用的32位的,网上有人说只要Python和instantclient位数一致就行,但是我用32位instantclient,加了环境变量,将dll文件扔到Python根目录下提示找不到所需的模块,之后我将Python换成64位,更改完环境变量并添加dll文件到Python根目录后连接成功。我想,应该是Oracle、Python、instantclient三者的版本应该一致吧。

目录

1.查看Oracle版本

2.查看Python版本

3.下载对应版本的instantclient

4.修改instantclient配置

5.添加环境变量

6.将instantclient中dll文件拷贝到Python根目录

7.运行Python脚本


1.查看Oracle版本

SELECT * FROM V$VERSION;

2.查看Python版本

我这里是重装Python后的版本

3.下载对应版本的instantclient

网址:Oracle Instant Client Downloads

这里下载64位的。进入64位下载页面后下载对应版本的Basic Package压缩包即可。

或者下载:instantclient_19_10

4.修改instantclient配置

将解压后的文件夹放在指定位置,在instantclient根目录下新建文件夹及文件:network\ADMIN\tnsnames.ora

在tnsnames.ora中写入以下内容,其中HOST的值改为Oracle服务端的IP。


ORCL = 
 (DESCRIPTION =  
 (ADDRESS_LIST =    
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))  
 ) 
 (CONNECT_DATA =   
    (SERVER = DEDICATED)   
    (SERVICE_NAME = orcl)  
 ) 
)

EXTPROC_CONNECTION_DATA =  
    (DESCRIPTION =    
    (ADDRESS_LIST =      
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
   )   
   (CONNECT_DATA =     
    (SID = PLSExtProc)  
    (PRESENTATION = RO)  
   ) 
  )

5.添加环境变量

在系统环境变量Path中添加自己instantclient的存放路径。

6.将instantclient中dll文件拷贝到Python根目录

7.运行Python脚本

以上步骤都完成的话,需要重新打开编译器再运行脚本。正常情况下应该就可以连接数据库了。下面记录一下Python脚本相关内容。

安装cx_Oracle模块:

pip install cx_Oracle

 Python连接Oracle:

import cx_Oracle

class Aboutdb:

    def resetstatus(self):

        # 连接到一个给定的数据库
        conn = cx_Oracle.connect(user="Oracle用户名", password="Oracle密码", dsn='127.0.0.1/数据库名')
        # 建立游标,用来执行数据库操作
        cursor = conn.cursor()

        # 执行SQL命令
        cursor.execute("select * from tablename")


        # 获取SELECT返回的列表
        rows = cursor.fetchall()
        print(rows)

        # 关闭游标
        cursor.close()

        # 关闭数据库连接
        conn.close()







if __name__ == '__main__':
    c = Aboutdb()
    c.resetstatus()

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值