类型错误:找不到类 com.microsoft.sqlserver.jdbc.SQLServerDriver

问题描述 投票:0回答:1

我正在尝试在 Jupyter 环境中通过 python 连接到 MMSQL 数据库,并添加 JDBC 驱动程序。尽管一切都应该以正确的方式设置,但每次运行此代码时,错误消息“TypeError:未找到 Class com.microsoft.sqlserver.jdbc.SQLServerDriver”都会重新出现。 应正确设置路径、JAVA_HOME 变量,并且包应在 Mac(M1) 上运行。我的一个朋友在她的 Windows 笔记本上(也在 jupyter 笔记本文件中)测试了它,它对她有效,没有遇到这个错误。

  • JDBC 驱动程序:mssql-jdbc-12.8.1.jre11.jar
  • JDK版本:“21.0.5”
  • Mac 版本:MacOS Sonoma(版本 14.5)
  • Python版本:3.11.5 如果有任何其他有用的信息,请告诉我!
import os
import jpype
import jaydebeapi
import pandas as pd

# Pfad zur JAR-Datei 
jdbc_driver_path = 'path/to/jar/file'

if not os.path.isfile(jdbc_driver_path):
    print(f"JAR-Datei wurde nicht gefunden unter: {jdbc_driver_path}")
else:
    print(f"JAR-Datei ist vorhanden: {jdbc_driver_path}")
    
# Start JVM mit der JAR-Datei im Klassenpfad
if not jpype.isJVMStarted():
    jpype.startJVM(jpype.getDefaultJVMPath(), f"-Djava.class.path={jdbc_driver_path}")

# Verbindungsparameter
server = 'dwh...'
database = 'db_name'
username = 'username'
password = 'password'

# JDBC-URL
jdbc_url = f'jdbc:sqlserver://{server};databaseName={database};encrypt=true;trustServerCertificate=true'

# Verbindung zur Datenbank herstellen
try:
    conn = jaydebeapi.connect(
        'com.microsoft.sqlserver.jdbc.SQLServerDriver',
        jdbc_url,
        [username, password],
        jars=jdbc_driver_path
    )
    print("Verbindung erfolgreich hergestellt")

    # Cursor erstellen
    cursor = conn.cursor()

    # Tabelle für Abfrage
    table_name = 'Facts_Monthly_Sales_Quota'

    # SQL-Abfrage zum Abrufen aller Daten der Tabelle
    query = f"SELECT * FROM {table_name}"

    # Abfrage ausführen und Ergebnisse in eine Liste laden
    cursor.execute(query)
    data = cursor.fetchall()
    columns = [desc[0] for desc in cursor.description]

    # DataFrame erstellen
    df = pd.DataFrame(data, columns=columns)

    # DataFrame anzeigen
    print(df)

    # Verbindung und Cursor schließen
    cursor.close()
    conn.close()
    
except Exception as e:
    import traceback
    print("Fehler beim Herstellen der Verbindung:")
    traceback.print_exc()  # Zeigt den vollständigen Stacktrace an

任何帮助将不胜感激!

我尝试设置数据库连接来访问数据,它应该连接,但它不断遇到相同的错误。 完整输出

python java macos jdbc mssql-jdbc
1个回答
0
投票

该问题与不正确的类路径或类似问题无关。我仍然不知道确切的问题是什么或为什么解决方案有效,但我只是 刷新了 jupyter 笔记本根目录的浏览器选项卡,这解决了我的问题。 多次重启内核也没用。

© www.soinside.com 2019 - 2024. All rights reserved.