zoukankan      html  css  js  c++  java
  • cx_Oracle安装说明

    • 简介

      cx_Oracle是用python连接oracle的驱动模块,参考文章:
      [cx_Oracle文档](http://cx-oracle.sourceforge.net/html/index.html)
      [木匣子](http://www.cnblogs.com/hzhida/archive/2012/08/13/2636735.html)
    1. 下载安装包
      cx_Oracle-5.1.2-10g-py26-1.x86_64.rpm
      oracle-instantclient12.1-basic-12.1.0.1.0-1.x86_64.rpm
      oracle-instantclient12.1-devel-12.1.0.1.0-1.x86_64.rpm
      官网下载地址:
      http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
      http://cx-oracle.sourceforge.net/
    2. 安装
      安装命令:
      rpm -Uvh cx_Oracle-5.1.2-10g-py26-1.x86_64.rpm
      rpm -Uvh oracle-instantclient12.1-basic-12.1.0.1.0-1.x86_64.rpm
      rpm -Uvh oracle-instantclient12.1-devel-12.1.0.1.0-1.x86_64.rpm
    3. 配置环境变量
      vi /etc/profile在/etc/profile文件追加如下信息:
      export ORACLE_HOME=/usr/lib/oracle/12.1/client64
      export PATH=$PATH:$ORACLE_HOME/bin
      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
      export TNS_ADMIN=$ORACLE_HOME/network/admin
      执行:
      source /etc/profile
    4. 验证安装是否成功

      验证方法:在目标服务器上执行:
      python,import cx_Oracle

      如果验证失败,参考5异常处理

    5. 异常处理 如果出现下面的错误:

      [root@client oracle]# python
       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
      ImportError: libclntsh.so.11.1: cannot open shared object file: No such file or directory
      这是由于驱动文件名称不对引起的
      在服务器上执行命令:
      find / -name libclntsh.so.*
      [root@client oracle]# find / -name libclntsh.so.*
      /usr/lib/oracle/12.1/client64/lib/libclntsh.so.12.1
      可见是文件名称不对,执行如下命令:
      cp /usr/lib/oracle/12.1/client64/lib/libclntsh.so.12.1 
      /usr/lib/oracle/12.1/client64/lib/libclntsh.so.11.1
      重新执行第四步,验证安装是否成功
    • cx_Oracle增删改查

       import cx_Oracle
    • 连接

      dsn=cx_Oracle.makedsn(host, int(port), dbname)
      self.conn = cx_Oracle.connect(user, passwd ,dsn)
      self.cursor = self.conn.cursor()
    • def insert(self, sql, param, flag = True):
            sql = self.sqltran(sql, param)
            self.cursor.execute(sql)
            self.conn.commit()
    • def selectall(self, sql, param=None):
            sql = self.sqltran(sql, param)
            self.cursor.execute(sql)
            result = self.cursor.fetchall()
            return result
    • 更新
      def update(self, sql, param=None, flag = True):    
            sql = self.sqltran(sql, param)
            self.cursor.execute(sql)
            self.conn.commit()
    • def delete(self, sql, param=None):     
            sql = self.sqltran(sql, param)
            self.cursor.execute(sql)
            self.conn.commit()
    • 关闭连接
      def __del__( self ):
            if self.conn :
            self.conn.close()
    • sql转换
      def sqltran(self,sql,param):
            for i in range(0,len(param)):
                sql = sql.replace('%s',str(param[i]),1)
            return sql
    • 测试方法
      if __name__ == '__main__':
      param = ('id','name','addr',1)
      sql1= 'select id ,name, addr from test'
      sql0= 'select %s,%s,%s from test'
      sql2= 'insert into test (%s,%s,%s)values(4,4,4)'
      sql3= 'update test set name=222 where id=%s'
      sql4= 'delete from test where id=%s'
      print oracle.selectall(sql0,param)
      print oracle.insert(sql2, param)
      print oracle.selectOne(sql0,param)
      print oracle.update(sql3,('3'))
      print oracle.delete(sql4,('4'))
      print oracle.selectall(sql0,param)
      print 'success'
  • 相关阅读:
    物联网数据卡系统源码——物联网的主要应用领域
    一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
    memcached对key和value的限制 memcached的key最大长度和Value最大长度
    缓存技术PK:选择Memcached还是Redis?
    .Net开源框架列表
    项目管理工具Redmine各功能测试
    DBImport V3.7版本发布及软件稳定性(自动退出问题)解决过程分享
    ASP.NET Core 折腾笔记一
    发布:.NET开发人员必备的可视化调试工具(你值的拥有)
    开源发布:VS代码段快捷方式及可视化调试快速部署工具
  • 原文地址:https://www.cnblogs.com/qinche/p/3413295.html
Copyright © 2011-2022 走看看