python 连接oracle作用_Python连接Oracle

Python连接Oracle

当前环境:Linux Centos 7

1. 下载安装包cx_Oracle

由于我本地Python版本是2.7,所以选择是2.7版本

wget https://pypi.python.org/packages/e1/18/00987c6a9af9568ee87d1fcba877407684a3f1b87515e5eb82d5d5acb9ff/cx_Oracle-6.0rc1-py27-1.x86_64.rpm#md5=ff8f5cce07bd5ec8ed3ce5c79d451474

参考:

2. 安装cx_Oracle

安装:

rpm -ivh cx_Oracle-6.0rc1-py27-1.x86_64.rpm

查看当前python引入模块库的路径

[root ~]# python

Python 2.7.5 (default, Nov 6 2016, 00:28:07)

[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import sys

>>> print sys.path

['', '/usr/lib/python2.7/site-packages/AliyunUtil-0.0.1-py2.7.egg', '/usr/lib/python2.7/site-packages/cloud_init-0.7.6-py2.7.egg', '/usr/lib64/python27.zip', '/usr/lib64/python2.7', '/usr/lib64/python2.7/plat-linux2', '/usr/lib64/python2.7/lib-tk', '/usr/lib64/python2.7/lib-old', '/usr/lib64/python2.7/lib-dynload', '/usr/lib64/python2.7/site-packages', '/usr/lib/python2.7/site-packages']

检查安装路径,如果cx_Oracle.so文件不在以上python引入路径内需要将该文件拷贝到以上python引入路径,所以我这里不需要进行拷贝操作

[root ~]# rpm -qa | grep cx_Oracle | xargs rpm -ql

/usr/lib64/python2.7/site-packages/cx_Oracle-6.0rc1-py2.7.egg-info

/usr/lib64/python2.7/site-packages/cx_Oracle-6.0rc1-py2.7.egg-info/PKG-INFO

/usr/lib64/python2.7/site-packages/cx_Oracle-6.0rc1-py2.7.egg-info/SOURCES.txt

/usr/lib64/python2.7/site-packages/cx_Oracle-6.0rc1-py2.7.egg-info/dependency_links.txt

/usr/lib64/python2.7/site-packages/cx_Oracle-6.0rc1-py2.7.egg-info/top_level.txt

/usr/lib64/python2.7/site-packages/cx_Oracle.so

3. 下载Oracle Library

由于Oracle官网下载东西存在Auth认证,所以简单点就点击选中的rpm包保存在windows上,然后上传到linux上即可

注意:

下载的版本要和连接的Oracle基本一致,我需要连接的Oracle版本是11.2,所以我下载的是oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm

操作系统要和之前下载的cx_Oracle要一致,这很重要!!!我在这个上面栽了跟头,花了比较多的时间。。。所以我需要下载64位的

在Oracle官网下载东西你得先勾选Accept License Agreement,否则你下载不了

其次你得有Oracle的账号

4. 安装Oracle Library

rpm -ivh oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm

5. 配置环境变量

修改Oracle安装路径

将client64改为client,至于为什么要改暂时还不清楚,只知道不改的话会报错Oracle Client library cannot be loaded: libclntsh.so: cannot open shared object file: No such file or directory

cd /usr/lib/oracle/11.2/

mv client64 client

打开~/.bashrc,追加环境变量路径

vim ~/.bashrc

配置环境变量

// 查看Oracle安装路径

[root@iZbp180vortqapb7yf8217Z ~]# rpm -qa | grep oracle | xargs rpm -ql

/usr/lib/oracle/11.2/client64/bin/adrci

/usr/lib/oracle/11.2/client64/bin/genezi

/usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1

/usr/lib/oracle/11.2/client64/lib/libnnz11.so

/usr/lib/oracle/11.2/client64/lib/libocci.so.11.1

/usr/lib/oracle/11.2/client64/lib/libociei.so

/usr/lib/oracle/11.2/client64/lib/libocijdbc11.so

/usr/lib/oracle/11.2/client64/lib/ojdbc5.jar

/usr/lib/oracle/11.2/client64/lib/ojdbc6.jar

/usr/lib/oracle/11.2/client64/lib/xstreams.jar

// 追加ORACLE_HOME环境变量路径

export ORACLE_HOME=/usr/lib/oracle/11.2/client

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

生效配置

source ~/.bashrc

6. 检查是否可以引入cx_Oracle

import没有报错,说明之前的辛苦没有白费

[root client64]# python

Python 2.7.5 (default, Nov 6 2016, 00:28:07)

[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import cx_Oracle

>>>

7. 连接Oracle

一个插入n条数据的Python脚本:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import sys

import cx_Oracle

import time

rows = int(sys.argv[1])

con = cx_Oracle.connect('test/test@sampledb')

cur = con.cursor()

cur.execute("SELECT MAX(ID) FROM PTTEST")

max_id = cur.fetchone()[0] or 0

start_id = max_id + 1

for i in xrange(rows):

cur.execute("INSERT INTO PTTEST (ID, NAME, AGE, GENDER, SALARY)VALUES(%d, 'pt', 15, 'male', 50000)" % int(i + start_id))

if i % 100 == 0:

time.sleep(3)

print 'Insert rows [%d]:%d' % (int(time.time()), i)

con.commit()

cur.close()

con.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值