当前位置:  数据库>oracle

Python 连接 Oracle 示例

    来源: 互联网  发布时间:2017-03-31

    本文导语: Python  2.4.3 RedHat  5.5 x86     Python 基础语法参考:        Python 基础语法知识   一.  cx_Oracle        Python 连接Oracle 数据库,需要使用cx_Oracle 包。        该包的下载地址:http://cx-oracle.sourceforge.net/          下载的...

Python  2.4.3

RedHat  5.5 x86

 

 

Python 基础语法参考:

       Python 基础语法知识

 

一.  cx_Oracle

       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!

print all:([(1, 13865999999L), (2, 13888888888L)])

 

 print by row:

(1, 13865999999L)

(2, 13888888888L)

 

This is Fetone!

(1, 13865999999L)

(2, 13888888888L)

 

select with parameter:

[(2, 13888888888L)]

[(2, 13888888888L)]

 

Python 类型和Oracle 类型的对应关系:

 

During the fetch stage, basic Oracle data types get mapped into their Python equivalents. cx_Oracle maintains a separate set of data types that helps in this transition. The Oracle - cx_Oracle - Python mappings are:

Oracle

cx_Oracle

Python

VARCHAR2
NVARCHAR2
LONG

cx_Oracle.STRING

str

CHAR

cx_Oracle.FIXED_CHAR

NUMBER

cx_Oracle.NUMBER

int

FLOAT

float

DATE

cx_Oracle.DATETIME

datetime.datetime

TIMESTAMP

cx_Oracle.TIMESTAMP

CLOB

cx_Oracle.CLOB

cx_Oracle.LOB


    
 
 

您可能感兴趣的文章:

  • Python获取网页编码的方法及示例代码
  • python读取csv文件示例(python操作csv)
  • python下xml解析库lxml最新版下载安装以及代码示例
  • python基础教程之python消息摘要算法使用示例
  • 数据结构:图(有向图,无向图),在Python中的表示和实现代码示例
  • python实现绘制树枝简单示例
  • 使用python删除nginx缓存文件示例(python文件操作)
  • python学习手册中的python多态示例代码
  • python调用windows api锁定计算机示例
  • python代码制作configure文件示例
  • python使用循环实现批量创建文件夹示例
  • python采用requests库模拟登录和抓取数据的简单示例
  • Python数组条件过滤filter函数使用示例
  • python获得图片base64编码示例
  • Python的print用法示例
  • python文件读写并使用mysql批量插入示例分享(python操作mysql)
  • Python pass 语句使用示例
  • python getopt 参数处理小示例
  • python的urllib模块显示下载进度示例
  • python list转dict示例分享
  • python求素数示例分享
  • Python 连接字符串(join %)
  • python list 合并连接字符串的方法
  • python字符串连接方式汇总
  • Python3实现连接SQLite数据库的方法
  • python mysqldb连接数据库
  • python连接mysql调用存储过程示例
  • python连接池实现示例程序
  • 技巧学习 在Python环境下连接Oracle数据库
  • python中常用的各种数据库操作模块和连接实例
  • python连接mongodb操作数据示例(mongodb数据库配置类)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • 让python同时兼容python2和python3的8个技巧分享
  • Python不使用print而直接输出二进制字符串
  • 使用setup.py安装python包和卸载python包的方法
  • Python中实现json字符串和dict类型的互转
  • 不小心把linux自带的python卸载了,导致安装一个依赖原python的软件不能安装,请问该怎么办?
  • python异常信息堆栈输出到日志文件
  • 新手该如何学python怎么学好python?
  • python下用os.execl执行centos下的系统时间同步命令ntpdate
  • 请教:system("C:\python2.4\python.exe C:\aa.py");该语句有何错误?为什么运行界面一闪就消失了并且没有运行完,请给出正确语句!
  • Python namedtuple对象json序列化/反序列化及对象恢复
  • python版本的问题
  • Python异常模块traceback用法举例
  • Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
  • python之平台独立的调试工具winpdb介绍
  • python安装的问题
  • 基于Python的Html/xml解析库Beautiful Soup 4.2.1发布
  • 如何运行Python程序的方法
  • 测试Python内部类型及type和isinstance用法区别
  • 明明安装了python却提示找不到!!
  • Python3中内置类型bytes和str用法及byte和string之间各种编码转换
  • 给我一点对perl/python的初步认识


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    python文件读写并使用mysql批量插入示例分享(python操作mysql) iis7站长之家