设为首页 加入收藏

TOP

Python 连接 Oracle 示例(一)
2014-11-24 08:20:29 来源: 作者: 【 】 浏览:2
Tags:Python 连接 Oracle 示例

Python 2.4.3




Python 基础语法参考:


Python 基础语法知识





Python 连接Oracle 数据库,需要使用cx_Oracle 包。


该包的下载地址:http://cx-oracle.sourceforge.net/



下载的时候,注意版本,对不同版本的Oracle 和平台,都有不同的cx_Oracle




[root@rac1 u01]# rpm -ivh cx_Oracle-5.1-10g-py24-1.i386.rpm


Preparing... ########################################### [100%]


1:cx_Oracl ########################################### [100%]



Linux 平台下,用root 用户进行安装,并且还需要将一些Oracle 的环境变量添加到root用户的.bash_profile 里。


最简单的方法,就是直接把ORACLE 用户的变量copy过来:



PATH=$PATH:$HOME/bin


export ORACLE_BASE=/u01/app/oracle


export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1


export ORA_CRS_HOME=$ORACLE_BASE/product/crs


export ORACLE_SID=dave1


export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin


export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin


export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin


export ORACLE_TERM=xterm


export TNS_ADMIN=$ORACLE_HOME/network/admin


export ORA_NLS10=$ORACLE_HOME/nls/data


export LD_LIBRARY_PATH=$ORACLE_HOME/lib


export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib


export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib


export CLASSPATH=$ORACLE_HOME/JRE


export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib


export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib


export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib


export THREADS_FLAG=native


export TEMP=/tmp


export TMPDIR=/tmp



然后source 应用一下。




. Python Oracle 的基本操作


2.1 DB连接和关闭DB连接


2.1.1 方法一:用户名,密码和监听 分开写



[root@rac1 u01]# cat db.py


import cx_Oracle


db=cx_Oracle.connect('system','oracle','192.168.2.42:1521/dave')


print db.version


db.close()



[root@rac1 u01]# python db.py


10.2.0.1.0



2.1.2 方法二:用户名,密码和监听写在一起


[root@rac1 u01]# cat db.py


import cx_Oracle


db=cx_Oracle.connect('system/oracle@192.168.2.42:1521/dave')


print db.version


db.close()



[root@rac1 u01]# python db.py


10.2.0.1.0



2.1.3 方法三:配置监听并连接



[root@rac1 u01]# cat db.py


import cx_Oracle


tns=cx_Oracle.makedsn('rac1',1521,'dave1')


db=cx_Oracle.connect('system','oracle',tns)


print tns


print db.version


vs=db.version.split('.')


print vs


if vs[0]=='10':


print "This is Oracle 10g!"


db.close()



[root@rac1 u01]# python db.py


(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=rac1)(PORT=1521)))(CONNECT_DATA=(SID=dave1)))


10.2.0.1.0


['10', '2', '0', '1', '0']


This is Oracle 10g!




2.2 建立cursor 并执行SQL语句



[root@rac1 u01]# cat db.py


import cx_Oracle


tns=cx_Oracle.makedsn('rac1',1521,'dave1')


db=cx_Oracle.connect('system','oracle',tns) --创建连接


cr=db.cursor() --创建cursor


sql='select * from phone'


cr.execute(sql) --执行sql 语句



print "\nThis is Fetchall!"


rs=cr.fetchall() --一次返回所有结果集



print "print all:(%s)" %rs


print "\n print by row:"


for x in rs:


print x



print "\nThis is Fetone!"


cr.execute(sql)


while(1):


rs=cr.fetchone() --一次返回一行


if rs ==None:break


print rs



--使用参数查询


print "\n select with parameter:"


pr={'id':3,'tel':13888888888}


cr.execute('select * from phone where id=:id or phone=:tel',pr)


--这里我们将参数作为一个字典来处理的


rs=cr.fetchall()


print rs



cr.execute('select * from phone where id=:myid or phone=:myphone',myid=2,myphone=13888888888)


--这里我们直接写参数


rs=cr.fetchall()


print rs



cr.close()


db.close()



[root@rac1 u01]# python db.py



This is Fetchall

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Python 基础语法知识 下一篇ARM Linux静态映射分析

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)
·MySQL 数据类型:从 (2025-12-26 18:20:03)
·Linux Shell脚本教程 (2025-12-26 17:51:10)
·Qt教程,Qt5编程入门 (2025-12-26 17:51:07)