【发布时间】:2021-11-18 03:59:50
【问题描述】:
我正在尝试通过 jaydebeapi 和 jdbc 驱动程序连接到我的数据库。
这是我的python代码:
import jaydebeapi
import jpype
class MyClass:
# jdbc_driver_path = os.path.join('Library', 'Java', 'Extensions', 'sqlserverjdbc.jar')
jdbc_driver_path = os.path.join('Library', 'Java', 'Extensions', 'sqljdbc_9.4', 'enu', 'mssql-jdbc-9.4.0.jre16.jar')
jaydebeapi_args = [
'com.microsoft.sqlserver.jdbc.SQLServerDriver',
# 'com.microsoft.jdbc.sqlserver.SQLServerDriver',
# 'org.hsqldb.jdbcDriver',
# 'com.mssql.jdbc.Driver',
# 'com.datavirtuality.dv.jdbc.Driver',
# os.path.join('Library', 'Java', 'Extensions', 'sqlserverjdbc.jar'),
# os.path.join('Library', 'Java', 'Extensions', 'sqljdbc_9.4', 'enu', 'mssql-jdbc-9.4.0.jre16.jar'),
'<host>',
dict(user='<user>', password='<password>'),
jdbc_driver_path
]
def __init__(self):
# jpype.startJVM(classpath=self.jdbc_driver_path)
connection = jaydebeapi.connect(*self.jaydebeapi_args)
注释掉的行也没有帮助。每次出现这个错误:
Traceback(最近一次调用最后一次): _bootstrap 中的文件“/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/multiprocessing/process.py”,第 315 行 自我运行() 运行中的文件“/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/multiprocessing/process.py”,第 108 行 self._target(*self._args, **self._kwargs) 文件“/Users/sgalich/Desktop/projects/myproject/myapp/views.py”,第 538 行,在 my_function 我的课( init 中的文件“/Users/sgalich/Desktop/projects/myproject/myapp/views.py”,第 199 行 连接 = jaydebeapi.connect(*self.jaydebeapi_args) 连接中的文件“/Users/sgalich/Desktop/projects/gdp/env/lib/python3.8/site-packages/jaydebeapi/init.py”,第 412 行 jconn = _jdbc_connect(jclassname, url, driver_args, jars, libs) _jdbc_connect_jpype 中的文件“/Users/sgalich/Desktop/projects/myproject/env/lib/python3.8/site-packages/jaydebeapi/init.py”,第 221 行 jpype.JClass(jclassname) new 中的文件“/Users/sgalich/Desktop/projects/myproject/env/lib/python3.8/site-packages/jpype/_jclass.py”,第 99 行 返回 _jpype._getClass(jc) TypeError:找不到类 com.microsoft.sqlserver.jdbc.SQLServerDriver
我也尝试设置类路径,但这些命令都没有帮助:
java -cp /Library/Java/Extensions/hsqlserverjdbc.jar com.microsoft.sqlserver.jdbc.SQLServerDriver
java -cp /Library/Java/Extensions/sqljdbc_9.4/enu/mssql-jdbc-9.4.0.jre16.jar com.microsoft.sqlserver.jdbc.SQLServerDriver
java -cp .:/Library/Java/Extensions/sqljdbc_9.4/enu/mssql-jdbc-9.4.0.jre16.jar:com.microsoft.sqlserver.jdbc.SQLServerDriver
export CLASSPATH=.:/Library/Java/Extensions/sqljdbc_9.4/enu/mssql-jdbc-9.4.0.jre16.jar:$CLASSPATH
export $CLASSPATH=.:/Library/Java/Extensions/sqljdbc_9.4/enu/mssql-jdbc-9.4.0.jre16.jar
export $CLASSPATH=/Library/Java/Extensions/sqljdbc_9.4/enu/mssql-jdbc-9.4.0.jre16.jar:$CLASSPATH
export $CLASSPATH=/Library/Java/Extensions/sqljdbc_9.4/enu/mssql-jdbc-9.4.0.jre16.jar
我在~/.bash_profile 中放置了一个带有驱动程序文件夹路径的变量,但它没有帮助。我重新安装了 Java,也没有帮助。
我怎样才能让它工作?
【问题讨论】:
-
您的
jdbc_driver_path没有前导路径分隔符,因此它可能被解释为相对于 cwd 的路径。 -
您使用的是哪个 Java 版本?
-
@AlwaysLearning 非常感谢!它有帮助!现在像魅力一样工作
标签: python sql-server jdbc jaydebeapi