• 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'
  • 相关阅读:
    php http_build_query 将布尔值类型转为整型的问题
    一天一个 Linux 命令(34):free 命令
    Laravel 如何使用 PHP 内置的服务器启动服务
    一天一个 Linux 命令(33):top 命令
    Java基础(5)-Java数据类型
    Java int和Integer有什么区别
    Java异常处理常见问题
    PHP重载,不一样的重载
    nginx 反向代理 proxy_pass详解
    composer repositories仓库配置,命令行修改仓库地址
  • 原文地址:https://www.cnblogs.com/qinche/p/3413295.html
Copyright © 2020-2023  润新知