zoukankan      html  css  js  c++  java
  • Python学习--和 Oracle 交互

    python 连接oracle 数据库

    1、安装 cx_oracle

    pip install cx_oracle

    2、出现

      cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: "dlopen(libclntsh.dylib, 1): image not found". See https://oracle.github.io/odpi/doc/installation.html#macos for help

    错误时解决办法:

    去oracle官网下载mac版的64bit的client basic 和client sdk

    http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html

    编译安装:

    sudo su #切换到root用户

    mkdir /Users/guanguan/oracle #创建oracle文件

    mv /Users/guanguan/Downloads/instantclient-* /Users/guanguan/oracle #将下载的两个Oracle包放到/Users/guanguan/oracle目录下

    cd /Users/guanguan/oracle 进入oracle文件中

    unzip instantclient-basic-macos.64-12.1.0.4.0.zip #解压

    unzip instantclient-sdk-macos.64-12.1.0.4.0.zip #解压

    cd instantclient_12_1/sdk

    unzip ottclasses.zip

    cd ..

    cp -R ./sdk/* .

    cp -R ./sdk/include .

    ln -s libocci.dylib.12.1 libocci.dylib

    ln -s libclntsh.dylib.12.1 libclntsh.dylib

    更改环境变量:

    vi ~/.bash_profile

    export ORACLE_HOME=/Users/guanguan/oracle/instantclient_12_1

    export DYLD_LIBRARY_PATH=$ORACLE_HOME

    export LD_LIBRARY_PATH=$ORACLE_HOME

    然后输入source ~/.bash_profile 或者 . ~/.bash_profile使环境变量生效

    5)测试环境变量是否生效

    echo $ORACLE_HOME

    /Users/guanguan/oracle/instantclient_12_1

    6)然后解压安装cx_Oracle:

    tar -zxvf cx_Oracle-5.2.1.tar.gz

    cd cx_Oracle-5.2.1

    python setup.py build

    python setup.py install

    7)测试cx_Oracle安装是否成功

    python

    import cx_Oracle

    #运行结果结果:

    ➜ ~ python Python 2.7.10 (default, Oct 23 2015, 19:19:21) [GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import cx_Oracle >>>

    或者 python -c "import cx_Oracle"

    ➜ ~ python -c "import cx_Oracle" ➜ ~

    此时说明已经安装成功啦~

    报错信息:

    sh-3.2# python -c "import cx_Oracle" /Library/Python/2.7/site-packages/cx_Oracle-5.2.1-py2.7-macosx-10.11-intel.egg/cx_Oracle.py:3: UserWarning: Module cx_Oracle was already imported from /Library/Python/2.7/site-packages/cx_Oracle-5.2.1-py2.7-macosx-10.11-intel.egg/cx_Oracle.pyc, but /Users/guanguan/oracle/cx_Oracle-5.2.1 is being added to sys.path Traceback (most recent call last):File "", line 1, in File "build/bdist.macosx-10.11-intel/egg/cx_Oracle.py", line 7, in File "build/bdist.macosx-10.11-intel/egg/cx_Oracle.py", line 6, in __bootstrap__ ImportError: dlopen(/var/root/.python-eggs/cx_Oracle-5.2.1-py2.7-macosx-10.11-intel.egg-tmp/cx_Oracle.so, 2): Library not loaded: @rpath/libclntsh.dylib.12.1Referenced from: /var/root/.python-eggs/cx_Oracle-5.2.1-py2.7-macosx-10.11-intel.egg-tmp/cx_Oracle.soReason: image not found

    解决方法:(删除之前安装的cx_Oracle,设置export FORCE_RPATH=TRUE,重新安装cx_Oracle)

    sh-3.2# export FORCE_RPATH=TRUE sh-3.2# pip install cx_Oracle Requirement already satisfied: cx_Oracle in /Library/Python/2.7/site-packages/cx_Oracle-5.2.1-py2.7-macosx-10.11-intel.egg sh-3.2# cd /Library/Python/2.7/site-packages/ sh-3.2# rm -f cx_Oracle-5.2.1-py2.7-macosx-10.11-intel.egg sh-3.2# pip install cx_Oracle Collecting cx_OracleUsing cached cx_Oracle-5.2.1.tar.gz Installing collected packages: cx-OracleRunning setup.py install for cx-Oracle ... done Successfully installed cx-Oracle-5.2.1

    sh-3.2# python Python 2.7.10 (default, Oct 23 2015, 19:19:21) [GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import cx_Oracle >>> exit()

    ==========================================

    python对cx_Oracle的简单操作:


    #! /usr/bin/python
    import cx_Oracle
    dsnStr = cx_Oracle.makedsn("127.0.0.1", "1521", "orcl")
    conn = cx_Oracle.connect(user="test", password="test", dsn=dsnStr)
    c=conn.cursor()
    x=c.execute('select *from TEST.TEST p WHERE ID<2')
    print (x.fetchone())
    c.close()
    conn.close() 

    欢迎关注公众号

  • 相关阅读:
    eclipse部署
    jsp—eclipse配置
    虚拟路径和虚拟主机
    tomcat配置
    初来乍到K
    【转】https://和http://区别
    【转】编码格式
    【转】如何使用瑞萨E10A调试SH系列不带片内FLASH的单片机
    【转】UML
    软考_系统架构师
  • 原文地址:https://www.cnblogs.com/codeBang/p/8795602.html
Copyright © 2011-2022 走看看