python连接oracle数据库实例

yipeiwu_com6年前Python基础

本文实例讲述了python连接oracle数据库的方法,分享给大家供大家参考。具体步骤如下:

一、首先下载驱动:(cx_Oracle)

http://www.python.net/crew/atuining/cx_Oracle/
不过要注意一下版本,根据你的情况加以选择。

二、安装:

首先配置oracle_home环境变量
执行那个exe安装程序就可以了,它会copy一个cx_Oracle.pyd到Libsite-packages目录下。
如果是linux,执行

复制代码 代码如下:
python setup.py build
python setup.py install

三、执行一段测试程序:

复制代码 代码如下:
import cx_Oracle

con = cx_Oracle.connect( "xjtu_test", "37343734","xjtu.world")
cursor = con.cursor()
cursor.close()
con.close()


里边connect中的3个参数从左到右分别是:user, pass, TNS。
那个TNS可以用Oracle客户端工具中的Net Configuration Assistant来配置。

四、具体的cx_Oracle API可以参考:
http://www.python.net/crew/atuining/cx_Oracle/html/cx_Oracle.html

五、示例:

复制代码 代码如下:
>>> import cx_Oracle
>>> conn=cx_Oracle.connect ('scott/tiger@oratest')
>>> curs=conn.cursor ()
>>> sql='select * from emp'
>>> rr=curs.execute (sql)
>>> row=curs.fetchone()
>>> row
(7369, 'SMITH', 'CLERK', 7902, datetime.datetime(1980, 12, 17, 0, 0), 800.0, None, 20)
>>> while row:
    (ID,NAME)=(row[0],row[1])
    row=curs.fetchone ()
    print ID,NAME

   
7369 SMITH
7499 ALLEN
7521 WARD
7566 JONES
7654 MARTIN
7698 BLAKE
7782 CLARK
7788 SCOTT
7839 KING
7844 TURNER
7876 ADAMS
7900 JAMES
7902 日常
7934 MILLER

如果使用windows平台,执行那段测试代码时你肯定遇到问题了,一般会有以下问题:

① import cx_Oracle 时报告找不到OCI.DLL:
到装了Oracle的机器上找一个,然后copy到Libsite-packages目录下就可以了。

② cx_Oracle.connect 时报告RuntimeError: Unable to acquire Oracle environment handle:
这个比较麻烦,按以下步骤来解决:(可能不需要所有的步骤,我没有确认,不过把以下步骤都执行了,确实问题就解决了)
首先,确认你是在控制台下边来执行这个python脚本的。而不是某些ide,例如:PyDev(它们似乎无法载入os的环境变量)。
其实,在本机安装Oracle(只安客户端工具就可以了)。
最后,添加以下环境变量:(我给出我的,换成你自己的路径就可以了)

复制代码 代码如下:
ORACLE_HOME=D:OracleOra81
PATH=D:OracleOra81bin;

希望本文所述对大家的Python程序设计有所帮助。

相关文章

Queue 实现生产者消费者模型(实例讲解)

Python中,队列是线程间最常用的交换数据的形式。 Python Queue模块有三种队列及构造函数: 1、Python Queue模块的FIFO队列先进先出。 class Queue...

Python3日期与时间戳转换的几种方法详解

日期和时间的相互转换可以利用Python内置模块 time 和 datetime 完成,且有多种方法供我们选择,当然转换时我们可以直接利用当前时间或指定的字符串格式的时间格式。 获取当前...

使用Python做定时任务及时了解互联网动态

使用Python做定时任务及时了解互联网动态

前言 本人因为比较喜欢看漫画和动漫, 所以总会遇到一些问题, 因为订阅的漫画或者动漫太多, 总会忘记自己看到那一章节或者不知道什么时候更新. 故会有这么一个需求, 想记录自己想看的漫画或...

简析Python的闭包和装饰器

简析Python的闭包和装饰器

什么是装饰器? 装饰器(Decorator)相对简单,咱们先介绍它:“装饰器的功能是将被装饰的函数当作参数传递给与装饰器对应的函数(名称相同的函数),并返回包装后的被装饰的函数”,听起来...

在python 中实现运行多条shell命令

使用py时可能需要连续运行多条shell 命令 1. # coding: UTF-8 import sys reload(sys) sys.setdefaultencoding('u...