当前位置:  数据库>oracle

Python 安装cx_Oracle模块

    来源: 互联网  发布时间:2017-06-22

    本文导语: 想访问远程Oracle数据库,本地又不想安装几百兆的Oracle Client(也木有root权限),安装python的cx_Oralce 模块需要依赖Oracle Instant Client 代替完整的Oracle Client。 Oracle Instant Client 下载:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html ...

想访问远程Oracle数据库,本地又不想安装几百兆的Oracle Client(也木有root权限),安装python的cx_Oralce 模块需要依赖Oracle Instant Client 代替完整的Oracle Client。

Oracle Instant Client 下载:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

下载:

  • instantclient-basic-linux.x64-11.2.0.4.0.zip
  • instantclient-sqlplus-linux.x64-11.2.0.4.0.zip
  • instantclient-sdk-linux.x64-11.2.0.4.0.zip
  • 解压文件放到如下目录:

    $HOME/oracle/instantclient_11_2

    拷贝tnsnames.ora文件,在/home/oracle/instantclient_11_2目录下创建network/admin目录,并将tnsnames.ora文件拷贝进去(这个貌似不是必要条件,出了问题的话就补上吧)

    ~/.bashrc设置:

    export ORACLE_HOME=$HOME/oracle/instantclient_11_2
    export TNS_ADMIN=$ORACLE_HOME/network/admin
    export DYLD_LIBRARY_PATH=$ORACLE_HOME
    export PATH=$ORACLE_HOME:$PATH

    下面就是该安装cx_Oracle的python模块了,下载直接python setup.py install

    由于非root的权限,会报无/lib64/python2.6/site-packages/目录读写权限

    可以改写python的安装目录

    export PATH=$ORACLE_HOME:$PATH

    然后source .bashrc生效

    接下来可以安装了:python setup.py install --prefix=~/.local (牛逼闪闪啊,直接在原目录前加了个本地目录前缀,华丽丽的解决非root的壁垒)

    顺其自然的又报错了(奔溃呀),/usr/bin/ld: cannot find -lclntsh

    这个错误之前在mac上装cx_Oracle时候没遇到,百度解决方案,得知是没有找到lib下的libclntsh.so函数库

    其实是有的,只不过名字改了,加软链接:

    ln -s libclntsh.so.11.1 libclntsh.so

    再次安装解决。

    补充:

    非root安装rpm包

    首先把RPM包解压出来,然后放在自己的目录下,并且添加好环境变量
    解压的命令为:
    rpm2cpio ctags-5.8-2.el6.x86_64.rpm | cpio -idvm
    这样就会按包里的目录结构解压到当前目录,如果是家目录的话,可以在家目录下的.bashrc这样添加环境变量

  • vim ~/.bashrc
  • export PATH=$PATH:$HOME/usr/bin/
  • 重新登录或者source ~/.bashrc文件,就可以使用这个程序了

    easy_install --prefix=~/.local cx_Oracle

    卸载:

    python setup.py install --record record.txt --prefix=~/.local
    然后删除record.txt里的所有文件

    贴段cx_Oracle 使用代码,作为备忘:

    import cx_Oracle
    class ConnectOracle:
        def __init__(self, username, passwd, locate):
            self.login = {}
            self.db = None
            self.cursor = None
            self.login['username'] = username
            self.login['passwd'] = passwd
            self.login['locate'] = locate

        def connect_oracle(self):
            try:
                self.db = cx_Oracle.connect(self.login['username'], self.login['passwd'], self.login['locate'])  # 登录内搜数据库
                self.db.autocommit = False  # 关闭自动提交
                self.cursor = self.db.cursor()  # 设置cursor光标
                return True
            except:
                print 'can not connect oracle'
                return False

        def close_oracle(self):
            self.cursor.close()
            self.db.close()

        def select_oracle(self, sql, num=0, temp=None):
            if self.connect_oracle():
                if temp:
                    self.cursor.executemany(sql, temp)
                else:
                    self.cursor.execute(sql)
                if num:
                    content = self.cursor.fetchmany(num)
                else:
                    content = self.cursor.fetchall()
                self.close_oracle()
                return content
            return False

        def insert_oracle(self, sql, temp=None):
            try:
                self.connect_oracle()
                if temp:
                    self.cursor.executemany(sql, temp)
                    # 执行多条sql命令
                else:
                    self.cursor.execute(sql)
            except:
                print "insert异常"
                self.db.rollback()  # 回滚
            finally:
                self.db.commit()
                self.close_oracle()


        
     
     

    您可能感兴趣的文章:

  • Python异常模块traceback用法举例
  • Python的多媒体模块 PyMedia
  • Python的MySQLdb模块安装
  • Python的视频设备访问模块 VideoCapture
  • WEB前端 iis7站长之家
  • 在Python安装MySQL支持模块的方法
  • linux下用eclipse进行开发,尤其打开较大的python代码模块,老是会卡,请问大家有没有好点的解决办法,如能提供具体设置,不胜感激
  • python使用os模块的os.walk遍历文件夹示例
  • 在python中的socket模块使用代理实例
  • WebSphereMQ的Python模块 PyMQI
  • python发布模块的步骤分享
  • python进阶教程之模块(module)介绍
  • python sys模块sys.path使用方法示例
  • python中的hashlib和base64加密模块使用实例
  • python pickle 和 shelve模块的用法
  • Python下的Mysql模块MySQLdb安装详解
  • python 多进程通信模块的简单实现
  • 从零学python系列之新版本导入httplib模块报ImportError解决方案
  • python爬虫常用的模块分析
  • python正则表达式re模块详解
  • python使用urllib模块开发的多线程豆瓣小站mp3下载器
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • python下xml解析库lxml最新版下载安装以及代码示例
  • 不小心把linux自带的python卸载了,导致安装一个依赖原python的软件不能安装,请问该怎么办?
  • numpy官方下载安装以及numpy详细使用教程(Python科学计算)
  • 使用setup.py安装python包和卸载python包的方法
  • 明明安装了python却提示找不到!!
  • python安装的问题
  • 怎样把python安装到/usr/lib下!!!
  • python安装问题,rpm命令显是缺少库文件
  • easy_install python包安装管理工具介绍
  • netbeans7安装python插件的方法图解
  • python自动安装pip
  • 新手使用ubuntu安装python和jdk不能,急求解~!!
  • Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
  • 零基础学Python(一)Python环境安装
  • ubuntu 安装时报错/usr/lib/python2.6/dist-packages/aptdaemon/worker.py
  • Eclipse + Python 的安装与配置流程
  • Python安装Imaging报错:The _imaging C module is not installed问题解决方法
  • win7安装python生成随机数代码分享
  • windows下安装python paramiko模块的代码
  • 教你安装python Django(图文)
  • python绘图库Matplotlib的安装
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • 让python同时兼容python2和python3的8个技巧分享
  • Python不使用print而直接输出二进制字符串
  • python读取csv文件示例(python操作csv)
  • Python中实现json字符串和dict类型的互转
  • python基础教程之python消息摘要算法使用示例
  • python异常信息堆栈输出到日志文件
  • 新手该如何学python怎么学好python?
  • python下用os.execl执行centos下的系统时间同步命令ntpdate
  • 使用python删除nginx缓存文件示例(python文件操作)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3