为什么这个 Python JDBC 连接不工作?

Why isn't this Python JDBC connection working?

我正在尝试通过 jaydebeapi 连接到 sybase 类型的数据库,但我 运行 遇到了问题。我在尝试连接时遇到了一个奇怪的错误,我不知道为什么...这是代码:

import jaydebeapi
conn = jaydebeapi.connect('net.sourceforge.jtds.jdbc.Driver', ['jdbc:jtds:sybase://hostname:port/database','username','password'],['/home/homedirectory/jtds-1.2.5-dist/jtds-1.2.5.jar'])

这是产生的错误:

Traceback (most recent call last):
  File "testos.py", line 3, in <module>
    conn = jaydebeapi.connect('net.sourceforge.jtds.jdbc.Driver', ['jdbc:jtds:sybase://hostname:port/','username','password'],['/home/homedirectory/jtds-1.2.5-dist/jtds-1.2.5.jar'])
  File "/usr/lib/python2.6/site-packages/JayDeBeApi-0.2.0-py2.6.egg/jaydebeapi/__init__.py", line 359, in connect
    jconn = _jdbc_connect(jclassname, jars, libs, *driver_args)
  File "/usr/lib/python2.6/site-packages/JayDeBeApi-0.2.0-py2.6.egg/jaydebeapi/__init__.py", line 183, in _jdbc_connect_jpype
    return jpype.java.sql.DriverManager.getConnection(*driver_args)
jpype._jexception.SQLExceptionPyRaisable: java.sql.SQLException: The executeQuery method must return a result set.

为什么会出现此错误?

这意味着您可能错误地调用了 executeQuery 函数或使用了错误的 sql 类型。尝试使用 execute 而不是 executeQuery.

注意:这假设有一个对 executeQuery 的调用,您在您的代码中没有post质疑。

我发现使用 "net.sourceforge.jtds.jdbc.Driver" (jtds.jar) 对我不起作用。当我切换到 "com.sybase.jdbc4.jdbc.SybDriver" (jconn4.jar) 时,它开始完美运行。两个驱动程序都应该工作,所以我认为这是 net.sourceforge.jtds.jdbc.Driver

中的错误