最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Python安装cx_Oracle插件方法详解
时间:2016-08-21 编辑:简简单单 来源:一聚教程网
1. Oracle客户端程序安装
1.1.系统说明
操作系统: CentOS 5.11
1.2.下载软件
需要安装oracle 客户端程序包含下列3个程序
1) oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
2) oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
3) oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm
其它的操作系统可从这里下载:
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
1.3. 安装软件
执行下列安装命令:
rpm –ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
rpm –ivh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
rpm –ivh oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm
2. cx_Oracle插件安装
2.1. 软件版本
Python版本:2.7.10
2.2. 下载插件
下载地址:https://pypi.python.org/pypi/cx_Oracle/5.2
这里下载 cx_Oracle-5.2.tar.gz(md5)
2.3. 编译安装
执行下列命令:
$ cd cx_Oracle-5.2
$ python27 setup.py build
$ python27 setup.py install
3. 连接测试
3.1. Python脚本
#!/usr/bin/env python27
# coding: utf8
import cx_Oracle as oracle
user="username"
passwd="password"
host="127.0.0.1"
port="1501"
sid="ORACLE-Service-Name"
dsn=oracle.makedsn(host, port, service_name=sid)
conn=oracle.connect(user, passwd, dsn)
cursor=conn.cursor()
sql="SELECT PERSON_ACCOUNT, PERSON_NAME FROM V_INFO_PERSON WHERE ROWNUM<=10"
cursor.execute(sql)
result = cursor.fetchall()
print result
3.2. 执行脚本
$ python27 test.py
3.3. 报错信息
3.3.1. ORA-21561
执行脚本报错信息如下:
cx_Oracle.DatabaseError: ORA-21561: OID generation failed
这是由于本地电脑的主机名和/etc/hosts下的名称不一致造成的,由于我们本地服务器的hostname是dbmonitor,所以在/etc/hosts中把127.0.0.1行的数据修改如下:
127.0.0.1 localhost dbmonitor
3.3.2. ORA-12505
执行脚本报错信息如下:
cx_Oracle.DatabaseError: ORA-12505: TNS:listener does not currently know of SID given in connect descriptor
这是由于执行dsn=oracle.makedsn(host, port, sid) 报错导致。我们拿到的连接ORACLE数据库的TNS参数设置如下:
TNS:
V-SAP =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1501))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = SAP.V-CLUSTER.COM)
)
)
而cx_Oracle中makedsn的语法如下:
cx_Oracle.makedsn(host, port, sid[ ,service_name])
由于我们拿到的连接参数中并不知道sid,所以我们需要把该行修改为service_name,将该行脚本修改如下:
dsn=oracle.makedsn(host, port, service_name=sid)
-
上一个: PHP判断变量是否已存在
-
下一个: Python对象与类及方法的详解
相关文章
- oracle 11.2 RAC 系列-安装新主机,识别老存储-1-识别ASM磁盘 03-19
- oracle11.2.0.4 GI单独安装tfa步骤详解 10-19
- ORACLE8I FOR SUN SOLARIS2.7 安装说明 01-14
- ORACLE8.1.7+TOMCAT3.2.1安装手册 01-14
- PHP导出数据超时的优化建议解读 10-31
- PHP之mysql位运算解析 10-31