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下的可执行命令
     
  • 相关阅读:
    SGU 176.Flow construction (有上下界的最大流)
    POJ 2391.Ombrophobic Bovines (最大流)
    poj 1087.A Plug for UNIX (最大流)
    poj 1273.PIG (最大流)
    POJ 2112.Optimal Milking (最大流)
    SGU 196.Matrix Multiplication
    SGU 195. New Year Bonus Grant
    关于multicycle path
    ppt做gif动图
    codeforces 598A Tricky Sum
  • 原文地址:https://www.cnblogs.com/isme-zjh/p/11576985.html
Copyright © 2011-2022 走看看