现在的位置: 首页 > 综合 > 正文

用jython 访问Oracle数据库

2012年01月22日 ⁄ 综合 ⁄ 共 2154字 ⁄ 字号 评论关闭

    
准备工作
下载
http://jaist.dl.sourceforge.net/sourceforge/zxjdbc/zxJDBC-2.1.tar.gz
http://jaist.dl.sourceforge.net/sourceforge/jython/jython_installer-2.2.1.jar
根据自己的jdk版本下载对应的ojdbc版本
http://download.oracle.com/otn/utilities_drivers/jdbc/10203/ojdbc14.jar
http://download.oracle.com/otn/utilities_drivers/jdbc/111060/lib/ojdbc5.jar
http://download.oracle.com/otn/utilities_drivers/jdbc/111060/lib/ojdbc6.jar

安装(需要已经安装了jdk/jre?)
java -jar jython_installer-2.2.1.jar 安装到C:/jython2.2.1
将zxJDBC.jar解压缩到c:/tmp
将mm.mysql-2.0.4-bin.jar复制到c:/tmp
C:/jython2.2.1>set CLASSPATH=c:/tmp/ojdbc5.jar;c:/tmp/zxJDBC.jar;%CLASSPATH%

启动Oracle服务器

进入jython环境访问Oracle
编辑文件c:/tmp/ora.py
from oracle.jdbc.driver import OracleDriver
from java.sql import DriverManager

def connect(un, pw, sid, host, port):
     driver = OracleDriver()
     DriverManager.registerDriver(driver)
     connection = "jdbc:oracle:thin:@%s:%s:%s" % (host, port, sid)
     conn = DriverManager.getConnection(connection, un, pw)
     return conn

def doStuff(conn):
     stmt = conn.createStatement()
     rset = stmt.executeQuery("SELECT banner FROM sys.v_$version")
     while (rset.next()):
         print rset.getString(1)
     stmt.close()

if __name__ == "__main__":
     un = 'ebc20'
     pw = 'abc'
     sid = 'abc'
     host = '10.4.231.16'
     port = '1521'
     conn = connect(un, pw, sid, host, port)
     doStuff(conn)

C:/jython2.2.1>jython /tmp/ora.py
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE    10.2.0.3.0      Production
TNS for HPUX: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production

要用jython自己封装的dbexts库
编辑一个名为dbexts.ini的文件保存到c:/jython2.2.1/lib
[default]
name=mysqltest

[jdbc]
name=ora
url=jdbc:oracle:thin:@10.4.231.16:1521:abc
user=ebc20
pwd=abc
driver=oracle.jdbc.driver.OracleDriver
datahandler=com.ziclix.python.sql.handler.OracleDataHandler

进入jython

>>> from dbexts import dbexts
>>> oracon = dbexts("ora", "c:/jython2.2.1/lib/dbexts.ini")

>>> oracon.isql("SELECT * FROM v$version")

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE    10.2.0.3.0      Production
TNS for HPUX: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production

5 rows affected

 

 

 

抱歉!评论已关闭.