• python链接oracle数据库


    初次接触Oracle数据库,在安装方面碰到许多的环境问题,以此作为记录。

    首先,python连接数据库不需要直接下载客户端oracle,这里用一个巧妙的方式,即安装PL/SQL Developer,不需要在本地安装oracle数据库,只需要在本机上配置plsql以实现远程数据库的连接。
    首先我下载了cx_oracle,这个是python与oracle连接的一个库,要注意,你的cx_oracle版本千万要python版本严格一致,不然会报错,去官网下载对应版本即可。这里提供官网链接:https://pypi.python.org/pypi,查找cx_oracle下载whl文件。终端下执行本地安装命令 :pip install cx_Oracle-6.0rc1-cp37-cp37m-win_amd64.whl。
    然后安装PLSQL,http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html,这是Oracle Instant Client的下载首页,有很多种版本可供下载。这里要注意,要明白你的Oracle版本是多少位的,如果是32位,那么就搜32位的版本下载对应的instantclient文件夹,如果是64的也是一样,和你的电脑位数无关,如果这里不一致的话,后面启动PLSQL会报出初始化失败的错误。
    然后就是一系列的安装就准备就绪了 ,我们找一个例子来测试下准备工作是否做好了。
    代码:'''

     import cx_Oracle
    
     conn = cx_Oracle.connect('yn_bpa/water@10.207.10.168/myora')#'fkong/fkong@172.17.23.129/orcl'
     cursor = conn.cursor()
    
     print("连接成功!")
    
     cursor.close()
     conn.commit()
     conn.close()
    

    代码部分也有要说明的,比如cx_oracle.connect(),括号里填的是你实际数据库的用户名/密码@IP地址(根据本地或远程选择)/service name.我这里是远程数据库的service name.关于service name 这是数据库与客户端链接使用的服务名,通过该名字获取登录信息。如果你不知道自己的service_name,可以去查询一下。
    调试了一下 ,我的pycharm报错了,也是比较常见的错误。
    '''

    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/。
    

    我猜测是版本不一致的错误,python是64位的,而oracle instantclient 与oracle都是32位的,于是我果断下载32位的python尝试。进入conda 终端,发现在base环境无法下载32位的python,所以我新建了虚拟环境。用
    '''

    set CONDA_FORCE_32BIT=1,
    

    切换至32位下。codna info 可以查看当前是32位还是64位。下载好32位的python以后,基本上达到了版本一致,也就大功告成了。
    最后,发现还是报错,cannot load.....dll文件,于是百度了一下,说是把instantclient_11_2这个文件夹中的所有dll文件复制到python所在的目录就好了。由于 我创建的是子环境,所以我直接复制在了子环境的安装目录下。
    最后,测试一下,连接成功。

    学习让我快乐,工作让我快乐。学习和工作都是为了更好的生活!
  • 相关阅读:
    bzoj 4361: isn
    bzoj 2560: 串珠子
    bzoj 3622: 已经没有什么好害怕的了
    UOJ #30. 【CF Round #278】Tourists
    Codeforces Round #452 E. New Year and Old Subsequence
    bzoj 2653: middle
    codeforces701C
    codeforces437C
    codeforces518B
    codeforces706C
  • 原文地址:https://www.cnblogs.com/xyuanzi/p/13403445.html
Copyright © 2020-2023  润新知