zoukankan      html  css  js  c++  java
  • python连接Oracle的方式以及过程中遇到的问题

    一、库连接步骤

    1、下载cx_Oracle模块

    下载步骤

    工具 pycharm :File--->右键setting--->找到Project Interpreter  ----->在此位置搜索下载相应的模块进行下载即可

     搜索想要安装的模块,选中之后Install   package即可

    2、python连接代码编写

    前提:虚拟机上的window7上32位的Oralce11.2.0版本的数据库、表Python_Oracle ,以及表中有一些测试数据

    """
    ---------------------------------------
     Author:Zjh
     Date: 2019-09-23 15:51
    ---------------------------------------
    """
    import  cx_Oracle
    #连接Oracle数据库
    class Connection():
        def OracleConn(self):
            # xnj = """
            #  (DESCRIPTION =
            # (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.27.4)(PORT = 1521))
            #     (CONNECT_DATA =
            #                 (SERVER = DEDICATED)
            #                 (SERVICE_NAME = orcl)                                      )
            #  )
            # """
            #建立Oracle远程连接
            # highway=cx_Oracle.connect('api_work','apiwork@1234',xnj)
            highway=cx_Oracle.connect('*****','**apiwork@1234**','192.168.27.4:1521/orcl')
            #获取cursor光标
            cursor=highway.cursor()
            #数据库操作
            #1.查询
            sql='select * from Python_Oracle'
            result=cursor.execute(sql)
            print('type of result',type(result))  #为了观察数据库查询语句执行的结果是什么类型的
    
            print("Number of rows returned: %d" % cursor.rowcount)   
    
            for i in result:    #循环遍历,查询得到的结果集
                print(i)
    
            #1.插入操作
    
            cursor.close()
            highway.close()
        pass
    pass
    
    if __name__=='__main__':
        connection = Connection()
        connection.OracleConn()

    查询结果:

    二、遇到的问题以及解答

    问题1、刚刚在进行完上面的安装cx_Oracle模块的时候遇到的问题:自己按照上面的步骤进行了Install package,之后引入的时候却有错误提示,说是还没有相应的模块,

    原因:引入方式正确,但是需要稍微的等待一段时间,等待pycharm真正的完全的安装完成,pycharm 的下方有相应的正在加载的提示。。。。modules loading 

    等待加载或者下载完毕即可消除错误提示

    问题2、编写完上述的python代码之后,尝试运行,结果报错

    python连接oracle数据库报错
    "DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: "
    解决方案:
      1)
    根据错误提示:得知是64位的Oracle Client无法被加载,这里的原因是没有安装64位版的Oracle客户端
    下载安装64位版的Oracle Client 地址连接:https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
    我下载的版本是:

    下载完毕之后,将zip包解压到D:/下面,形成一个D:instantclient_11_2     的文件夹,下面是zip包中的内容

      2)配置系统环境变量

        a:NLS_LANG               值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK      为了防止中文乱码

        b: ORACLE_HOME     值:D:instantclient_11_2                         ORACLE_HOME下则是ORACLE的命令、连接库、安装助手、listener等等一系列的东东,其实配置这个                                变量是为了在path中去%ORACLE_HOME%使用,如果没有这个变量也可以,

        c: TNS_ADMIN             值:D:instantclient_11_2   

        d:     path                         值:D:instantclient_11_2                         为了在哪里都能找到可执行的Oracle客户端下面的可执行程序

    path 图示

     最后重启pycharm,运行代码即可查询成功

    问题解决

    问题三、可能大家理解也有这样的误区:为什么解压了客户端形成了一个目录D:instantclient_11_2  就可以成功访问连接数据库

    原因,python会从环境变量path中去找客户端中的一些.dll包,所以需要配置环境变量  path  =.......D:instantclient_11_2    

    因为

    b: ORACLE_HOME     值:D:instantclient_11_2   ORACLE_HOME下则是ORACLE的命令、连接库、安装助手、listener等等一系列的东东,其实配置这个  


    变量是为了在path中去%ORACLE_HOME%使用,如果没有这个变量也可以,只要在path中配置了安装的instantclient_11_2的根路径即可

    第一个环境变量是为了python找到为了连接Oracle所下载的客户端,

    为了python找到为了连接Oracle所下载的客户端目录      

     并没有tnsnames.ora

    listener.ora等文件

    第二个是为了使得在cmd下的任何位置都可以执行Oracle客户端下的可执行命令如sqlplus等

    有tnsnames.ora
    listener.ora等文件

     具体的都叫oracle客户端,但是他们的区别是???????

    还有一点需要注意的,当我们第一次安装了Oracle的客户端也就是图二的那种,在plsql dev中的首选项中会选择一个客户端的安装根目录和其下的一个oci.dll文件,这个和客户端的环境变量是没有关系的,
    因为这里已经指定了路径了,也就是

    中的第一项可以不配置,配置仅仅是为了能在dos的任何目录下去执行那些Oracle10g下的可执行命令
     
  • 相关阅读:
    Linux上Blogilo连接博客园账户
    字符串模式匹配KMP算法
    回溯法之n皇后问题
    回溯法之k着色问题
    动态规划之最短路径(Floyd算法)
    动态规划之最长公共子序列
    动态规划之矩阵链乘
    New home
    POJ 2478:Farey Sequence
    Codeforces Round #416 (Div. 2)
  • 原文地址:https://www.cnblogs.com/isme-zjh/p/11576985.html
Copyright © 2011-2022 走看看