【问题标题】:TypeError: Class com.microsoft.sqlserver.jdbc.SQLServerDriver is not found [MacOs, python, jaydebeapi]类型错误:找不到类 com.microsoft.sqlserver.jdbc.SQLServerDriver [MacOs、python、jaydebeapi]
【发布时间】: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


【解决方案1】:

jdbc_driver_path 没有前导路径分隔符,因此它被解释为相对于当前路径的路径。

感谢@AlwaysLearning 的回答!

【讨论】:

    猜你喜欢
    • 2019-10-12
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    相关资源
    最近更新 更多