2009-01-22 104 views
1

我無法從Jython程序連接到數據庫。純Java程序可以連接,我可以從Jython連接到數據庫,但只能使用JDBC-ODBC橋:「sun.jdbc.odbc.JdbcOdbcDriver」。如果我使用本機JDBC驅動程序,則我的程序會因「找不到驅動程序」異常而失敗如何從Jython連接到數據庫

代碼:

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:\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 

我認爲我的CLASSPATH設置正確,而本地Java程序可以連接到使用本機驅動程序這個數據庫。 我發現所有JDBC驅動程序都有cachedir \ packages中的.pkc文件。

我應該設置什麼來獲取數據庫連接?

回答

0

消失我有同樣的問題,不能用--verify標誌(Jython的抱怨未知開關)。只要我將OS X Leopard Java配置爲使用1.6虛擬機而不是1.5,該問題就神奇地消失了。

2

經過一天的努力,我終於找到了解決方案。不要打擾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)