English 中文(简体)
如何从Jython连接数据库
原标题:
  • 时间:2009-01-22 11:32:24
  •  标签:

我无法从我的Jython程序连接到数据库。纯Java程序可以连接,而我只能使用JDBC-ODBC桥从Jython连接到数据库:“sun.jdbc.odbc.JdbcOdbcDriver”。如果我使用本机JDBC驱动程序,我的程序将失败并出现“找不到驱动程序”异常。

代码:

import sys
from com.ziclix.python.sql import zxJDBC

connection1 = zxJDBC.connect( jdbc:odbc:test_odbc ,  postgres ,  postgres ,  sun.jdbc.odbc.JdbcOdbcDriver )
print "JDBC:ODBC connection set"
connection2 = zxJDBC.connect( jdbc:postgresql://127.0.0.1/test?stringtype=unspecified ,  postgres ,  postgres ,  org.postgresql.Driver )
print "JDBC native connection set"

输出

C:	oolspyscriptsscriptsdb_examples>jython --version
Jython 2.5b1 (trunk:5903:5905, Jan 9 2009, 16:01:29)
[Java HotSpot(TM) Client VM (Sun Microsystems Inc.)] on java1.6.0_11

C:	oolspyscriptsscriptsdb_examples>jython pg_test.py
JDBC:ODBC connection set
Traceback (most recent call last):
  File "pg_test.py", line 6, in <module>
    connection2 = zxJDBC.connect( jdbc:postgresql://127.0.0.1/test?stringtype=un
specified ,  postgres ,  postgres ,  org.postgresql.Driver )
zxJDBC.DatabaseError: driver [org.postgresql.Driver] not found

I think that my CLASSPATH is set properly while native Java programs can connect to this database using native driver. I have found that all JDBC drivers have .pkc files in cachedirpackages.

我应该设置什么来获取数据库连接?

最佳回答

我会回答我自己:

Jython 2.5b1 中出现了错误:当安装在引导类路径上时,Jython 在动态加载类时会遇到问题

如果我使用--verify标志调用它,我就能够运行我的程序。

Jython 2.5b3中的Bug已消失

问题回答

在经过一天的努力后,我终于找到了解决方案。不要再费心地使用zxJDBC、Class.forName、DriverManager等等,只需要直接实例化驱动程序即可:

import os
import sys
from java.util import Properties

# add the jar to your classpath, then import it
sys.path.append( /tmp/postgresql-8.4-701.jdbc4.jar )
import org.postgresql.Driver as Driver

props = Properties()
props.put( user ,  u )
props.put( password ,  p )

conn = Driver().connect( jdbc:postgresql://127.0.0.1 , props)

我遇到了同样的问题,无法使用--verify标志(Jython 抱怨未知的开关)。当我将我的OS X Leopard Java配置为使用1.6虚拟机而不是1.5时,问题神奇地消失了。





相关问题
热门标签