python - netbeans 找不到 jython 项目的 zxJDBC 驱动程序

标签 python sql netbeans jython

我正在尝试通过 netbeans IDE 中 jython 的 zxJDBC 包连接到数据库。 我已经指定了 zxJDBC.jar 和驱动程序的路径:

see the snapshot here

并不断收到错误消息:

zxJDBC.DatabaseError: driver [com.microsoft.sqlserver.jdbc.SQLServerDriver] not found

这是我正在输入的代码:

from com.ziclix.python.sql import zxJDBC    
conn = zxJDBC.connect("jdbc:sqlserver://SERVERNAME;DatabaseName=DBNAME;","USER","PASSWORD","com.microsoft.sqlserver.jdbc.SQLServerDriver")
cursor = conn.cursor()
cursor.execute("select * from TABLE1")

for row in cursor:
    print('row = %r' % (row,))

我使用的python平台是jython 2.5.1

最佳答案

可能与您的 CLASSPATH 值有关。 Jython 需要与 JDBC 驱动程序的位置相关。 在我在 Linux 中使用 Jython 2.7.0 的情况下,我在解释器中查看了 Jython 默认搜索的 CLASSPATH 位置:

在 Jython 解释器中输入:

Jython 2.7.0 (default:9987c746f838, Apr 29 2015, 02:25:11) 
[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.8.0_151
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/opt/jython/Lib', '__classpath__', '__pyclasspath__/', '/opt/jython/Lib/site-packages']
>>> sys.path.append("/opt/jython/jdbc/derby.jar")
>>> sys.path.append("/opt/jython/jdbc/derbyclient.jar")
>>> sys.path
['', '/opt/jython/Lib', '__classpath__', '__pyclasspath__/', '/opt/jython/Lib/site-packages', '/opt/jython/jdbc/derby.jar', '/opt/jython/jdbc/derbyclient.jar']
>>> 

我发现解决此问题的方法是将驱动程序的目录与文件调用到 sys.path。

示例:

Jython 2.7.0 (default:9987c746f838, Apr 29 2015, 02:25:11) 
[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.8.0_151
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/opt/jython/Lib', '__classpath__', '__pyclasspath__/', '/opt/jython/Lib/site-packages']
>>> sys.path.append("/opt/jython/jdbc/derby.jar")
>>> sys.path.append("/opt/jython/jdbc/derbyclient.jar")
>>> sys.path
['', '/opt/jython/Lib', '__classpath__', '__pyclasspath__/', '/opt/jython/Lib/site-packages', '/opt/jython/jdbc/derby.jar', '/opt/jython/jdbc/derbyclient.jar']
>>> from com.ziclix.python.sql import zxJDBC
>>> d, u, p, v = "jdbc:derby://localhost:1527//opt/apache-derby/derbydata/derbytutor/mundialito", "APP", "APP", "org.apache.derby.jdbc.ClientDriver"
>>> db = zxJDBC.connect(d, u, p, v)
>>> c = db.cursor()
>>> c.execute("SELECT * FROM COUNTRY_FIFA_RANK")
>>> for a in c.fetchall():
...     print a
... 
(1, u'Germany', u'GER', datetime.date(2017, 6, 12), 1, 1, None, None, None)
(2, u'Brazil', u'BRA', datetime.date(2017, 6, 12), 2, 2, None, None, None)
(3, u'Portugal', u'POR', datetime.date(2017, 6, 12), 3, 3, None, None, None)
>>> c.close()
>>> db.close()

关于python - netbeans 找不到 jython 项目的 zxJDBC 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48026805/

相关文章:

MySQL 将日期范围转换为单行/每年的计数天数?

java - 循环遍历一个文件,一组一行一行

python - 如何在函数中使用局部变量并返回它?

python - 是否可以使用 pandas dataframe 或任何其他方式插入日期而不考虑闰年 2 月 29 日?

python - 使用元组键对字典进行平均

java - 无法显示 JTable 中的行(数据库中的值)

sql - 如何缩短我对 StackExchange 的 SQL 查询?

python - 使用 REST 在 Jenkins 中添加构建信息

java - 如何将 eclipse 中的 scala 项目中的文件包含到 netbeans 中的 java 项目中

maven - Selenium Netbeans 项目到可运行的 jar