【问题标题】:How to connect to database from Jython如何从 Jython 连接到数据库
【发布时间】:2009-01-22 11:32:24
【问题描述】:

我无法从我的 Jython 程序连接到数据库。纯 Java 程序可以连接,我可以从 Jython 连接到 db,但只能使用 JDBC-ODBC 桥:“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:\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 文件。

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

【问题讨论】:

    标签: jdbc jython


    【解决方案1】:

    我会回答自己:

    Jython 2.5b1 中存在错误:Jython has problems to dynamically loading classes when installed on the boot classpath

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

    Bug 在 Jython 2.5b3 中消失了

    【讨论】:

      【解决方案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)
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-01-01
          • 2019-10-16
          • 2017-05-18
          • 2010-11-23
          • 2018-02-25
          • 2017-11-09
          相关资源
          最近更新 更多