脚本宝典收集整理的这篇文章主要介绍了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
上即可
注意:
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()
以上是脚本宝典为你收集整理的Python连接Oracle全部内容,希望文章能够帮你解决Python连接Oracle所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。