Linux jython oracle

本文介绍如何在Linux环境中使用Jython与Oracle数据库进行交互,包括环境配置、连接数据库及执行SQL语句的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

和网上的相比 ,就是 linux使用
http://www.jython.org/Project/download.html
下载 jython 包,(安装!不,就直接解压jar 就可以用了,我 linux 没有窗口!可怜 )
jar   -xvf  jython_install.jar
使用 root 
vim /etc/profile #添加 
export JAVA_HOME =/ usr / local / jdk1. 5 .0_17
export CLASSPATH
= .:$JAVA_HOME / lib:$JAVA_HOME / jre / lib: / home / xj_liukaiyi / src / java / lib / ojdbc14 - 1.0 .jar: / home / xj_liukaiyi / src / jython / evn_lib / jython.jar
export PATH
= $JAVA_HOME / bin:$JAVA_HOME / jre / bin:$PATH
alias jython
= ' java org.python.util.jython  '
测试 oracle
# !jython
from  oracle.jdbc.driver  import  OracleDriver
from  java.sql  import  DriverManager
def  connect(un = ' dbuser ' , pw = ' pass123 ' , sid = ' ora10g ' , host = ' 192.168.102.223 ' , port = ' 1688 ' ):
    driver 
=  OracleDriver()
    DriverManager.registerDriver(driver)
    connection 
=   " jdbc:oracle:thin:@%s:%s:%s "   %  (host, port, sid)
    
return  DriverManager.getConnection(connection, un, pw)


def  doSelect(strSql,func = None,doConn = None):
    is_now_conn
= None
    
if   not  doConn :
        is_now_conn
= True
        doConn
= connect()
    stmt 
=  doConn.createStatement()
    datas
= []
    rows
= 0
    
try :
        
try :
                rset 
=  stmt.executeQuery(strSql)
                ccount
= rset.getMetaData().getColumnCount()
                data
= []
                
while  (rset.next()):
                        rows
= rows + 1
                        
# print rset.getObject(1)
                         for  ii  in  range(ccount):
                                data.append(rset.getObject(ii
+ 1 ))
                
if  func :
                        func(data,rows)
                datas.append(data)
        
except :
                
pass
    
finally :
        
try :
                stmt.close()
        
finally :
                
if  is_now_conn   :
                        doConn.close()
                        
print   " -conn close- "
    
return  datas

def  runRow(data,rows):
        
print   " runRow row=%s data=%s  "   %  (rows,data)

if   __name__   ==   " __main__ " :
    
# 模式1 定义一次 conn close
     # 可插拔式 定义方法使用 runRow (罗嗦下java 要达到只能写接口 !)
    doSelect( ' select count(*) from MN05_TBL_BIZ   ' ,runRow)

    
# 模式2 外部定义 conn 并,可多次使用 后 conn close
    conn = connect()
    
print  doSelect( ' select count(*) from MN05_TBL_COPYRIGHT   ' ,doConn = conn)
    
print  doSelect( ' select count(*) from MN05_TBL_BIZ   ' ,doConn = conn)
    

   from  java.lang  import   *
   print  tts[ 2 ]
   # 梁咏琪   #有换行 这 使用 java.lang.String.trim 
   #
   sql = """
    select tb.NAME 
    from MN05_TBL_BIZ tb , MN05_TBL_COPYRIGHT  tc 
    where 
        tb.copyright_id=tc.COPYRIGHT_ID and 
        tb.actor = '%s'
        
    """   % String(tts[ 2 ]).trim()  )
    
# 中文匹配问题这 使用 decode('utf8') 变成unicod 就可以了
    

    arr=db.doSelect(sql.decode(
'utf8' ),doConn = conn)
    
for t in arr[0]:
       print t. encode('utf-8')

    
conn.close()
jython 结果 
-bash-3.00$ jython  db.py 
runRow row=1 data=[3487033] 
-conn close-
[[1563479]]

[[3487033]]

本文转自博客园刘凯毅的博客,原文链接:Linux jython oracle,如需转载请自行联系原博主。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值