zoukankan      html  css  js  c++  java
  • python3.6连接oracle数据库

    下载cx_Oracle模块模块:

    https://pypi.python.org/pypi/cx_Oracle/5.2.1#downloads

    这里下载的是源码进行安装

    [root@oracle oracle]# tar xf cx_Oracle-5.2.1.tar.gz
    [root@oracle oracle]# cd cx_Oracle-5.2.1

    [root@oracle cx_Oracle-5.2.1]# python setup.py build
    Traceback (most recent call last):
    File "setup.py", line 170, in <module>
    raise DistutilsSetupError("cannot locate an Oracle software "
    distutils.errors.DistutilsSetupError: cannot locate an Oracle software installation

    报错解决办法:在root用户的.bash_profile文件中添加oracle_home的环境变量

    export ORACLE_HOME=/u01/app/product/11.2.0/dbhome_1
    PATH=${ORACLE_HOME}/bin:$PATH:$HOME/bin

    [root@oracle cx_Oracle-5.2.1]# source /root/.bash_profile
    [root@oracle cx_Oracle-5.2.1]# echo ${ORACLE_HOME}
    /u01/app/product/11.2.0/dbhome_1

    然后继续build:

    [root@oracle cx_Oracle-5.2.1]# python setup.py build
    running build
    running build_ext

    后面输出信息省略

    [root@oracle cx_Oracle-5.2.1]# python setup.py install
    running install
    running bdist_egg

    后面输出信息省略

    按照完成之后,进行验证模块:

    >>> import cx_Oracle
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    ImportError: libclntsh.so.11.1: cannot open shared object file: No such file or directory

    解决办法:在root用户的.bash_profile文件中添加LD_LIBRARY_PATH的环境变量

    LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/local/lib
    export LD_LIBRARY_PATH

    [root@oracle cx_Oracle-5.2.1]# source /root/.bash_profile

    [root@oracle cx_Oracle-5.2.1]# python
    Python 3.6.1 (default, Jul 13 2017, 14:31:18)
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import cx_Oracle

    #!/usr/bin/python
    #coding=utf8
    
    
    # import module
    import cx_Oracle as oracle
    
    # connect oracle database
    db = oracle.connect('scott/redhat@192.168.223.138:1521/oracle.test')
    
    # create cursor
    cursor = db.cursor()
    
    # execute sql 
    cursor.execute('select sysdate from dual')
    
    # fetch data
    data = cursor.fetchone()
    
    print('Database time:%s' % data)
    
    # close cursor and oracle
    cursor.close()
    db.close()
    

    [oracle@oracle scripts]$ python connectoracle.py
    Database time:2017-08-04 10:20:39

    #!/usr/bin/python
    #coding=utf8
    
    import cx_Oracle as oracle
    
    def oraclesql(cursor):
       fp = open(r'/home/oracle/scripts/tablespace.sql')
       fp_sql = fp.read()
       cursor.execute(fp_sql)
       data = cursor.fetchall()
       return data
    
    
    if __name__ == '__main__':
       ipaddr = "192.168.223.138"
       username = "system"
       password = "redhat"
       oracle_port = "1521"
       oracle_service = "oracle.test"
       try:
          db = oracle.connect(username+"/"+password+"@"+ipaddr+":"+oracle_port+"/"+oracle_service)
        # 将异常捕捉,然后e就是抛异常的具体内容
       except Exception as e:   
          print(e)
       else:
          cursor = db.cursor()
          data = oraclesql(cursor)
          for i in data:
             print(i)
          cursor.close()
          db.close()
    

      

  • 相关阅读:
    克如斯卡尔 P1546
    真正的spfa
    第四课 最小生成树 要点
    关于vscode中nullptr未定义
    cmake学习笔记
    python学习笔记
    (BFS 图的遍历) 2906. kotori和迷宫
    (图论基础题) leetcode 997. Find the Town Judge
    (BFS DFS 并查集) leetcode 547. Friend Circles
    (BFS DFS 图的遍历) leetcode 841. Keys and Rooms
  • 原文地址:https://www.cnblogs.com/jsonhc/p/7283620.html
Copyright © 2011-2022 走看看