python怎么安装_Python安装cx_Oracle插件方法详解

更新时间:2020-11-02    来源:python    手机版     字体:

【www.bbyears.com--python】


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)

本文来源:http://www.bbyears.com/jiaocheng/108441.html

猜你感兴趣

热门标签

更多>>

本类排行