Python连接Oracle

本文详细介绍如何在Linux CentOS 7环境下安装Python的cx_Oracle模块,并配置Oracle客户端库,最后通过示例脚本展示如何使用cx_Oracle连接Oracle数据库并执行批量数据插入。

转自:https://segmentfault.com/a/1190000009878547
当前环境: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
参考:

python-cx_Oracle
安装包列表
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
  1. 下载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= LDLIBRARYPATH: 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

  1. 连接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数据库 为了实现PythonOracle数据库之间的交互,通常会选择合适的驱动程序并按照特定流程完成安装和配置工作。当前存在多种用于此目的的库,其中`cx_Oracle`是最受欢迎的选择之一[^1]。 #### 安装cx_Oracle驱动程序 确保已安装Python解释器之后,可以通过pip工具轻松获取`cx_Oracle`包。打开终端或命令提示符窗口,并输入下面这条指令来执行安装操作: ```bash pip install cx_Oracle ``` 对于最新版本的支持以及性能优化方面考虑,也可以尝试使用由原作者重新命名发布的`python-oracledb`作为替代方案[^4]。 #### 导入必要的模块 一旦成功安装好所需的驱动程序,在编写实际的应用逻辑之前还需要引入相应的Python模块。这一步骤非常简单,只需加入如下所示的一行代码即可: ```python import cx_Oracle ``` #### 创建数据库连接对象 接下来就是构建同目标Oracle实例间的通信桥梁——即创建一个表示该链接的对象。这里需要用到`connect()`方法,并向其传递必要的认证参数(如用户名、密码)和服务定位信息(比如主机地址、服务名称)。完整的调用形式可能看起来像这样: ```python connection = cx_Oracle.connect( user="your_username", password="your_password", dsn="host_address:port_number/service_name" ) ``` 请注意替换上述模板中的占位符部分以匹配具体的部署环境设置[^2]。 #### 关闭资源释放 当所有的查询活动结束后应当及时断开现有的网络连接,从而避免不必要的资源占用问题发生。为此可在不再需要Connection实例时显式地调用它的close()成员函数: ```python connection.close() ``` 通过以上几个简单的步骤就可以建立起基于Python应用程序访问远程Oracle数据存储的能力了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值