Jdbc 如何从Jython连接到数据库

Jdbc 如何从Jython连接到数据库,jdbc,jython,Jdbc,Jython,我无法从Jython程序连接到数据库。纯Java程序可以连接,我可以从Jython连接到db,但只能使用JDBC-ODBC桥:“sun.JDBC.ODBC.JdbcOdbcDriver”。如果我使用本机JDBC驱动程序,我的程序将失败,出现“未找到驱动程序”异常 代码: 输出: C:\tools\pyscripts\scripts\db_examples>jython --version Jython 2.5b1 (trunk:5903:5905, Jan 9 2009, 16:01:29

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

代码:

输出:

C:\tools\pyscripts\scripts\db_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:\tools\pyscripts\scripts\db_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
C:\tools\pyscripts\scripts\db\u examples>jython--version
Jython 2.5b1(主干:5903:59052009年1月9日,16:01:29)
[JavaHotSpot(TM)客户端虚拟机(Sun Microsystems Inc.)]
C:\tools\pyscripts\scripts\db\u examples>jython pg\u test.py
JDBC:ODBC连接集
回溯(最近一次呼叫最后一次):
文件“pg_test.py”,第6行,在
connection2=zxJDBC.connect('jdbc:postgresql://127.0.0.1/test?stringtype=un
指定的“,”postgres“,”postgres“,”org.postgresql.Driver“)
zxJDBC.DatabaseError:找不到驱动程序[org.postgresql.driver]
我认为我的类路径设置正确,而本机Java程序可以使用本机驱动程序连接到此数据库。 我发现所有JDBC驱动程序在cachedir\packages中都有.pkc文件

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

我会回答自己:

Jython 2.5b1中存在漏洞:

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


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

经过一天的努力,我终于找到了解决方案。不必为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)
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)