我正在尝试在 Jupyter 环境中通过 python 连接到 MMSQL 数据库,并添加 JDBC 驱动程序。尽管一切都应该以正确的方式设置,但每次运行此代码时,错误消息“TypeError:未找到 Class com.microsoft.sqlserver.jdbc.SQLServerDriver”都会重新出现。 应正确设置路径、JAVA_HOME 变量,并且包应在 Mac(M1) 上运行。我的一个朋友在她的 Windows 笔记本上(也在 jupyter 笔记本文件中)测试了它,它对她有效,没有遇到这个错误。
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
任何帮助将不胜感激!
我尝试设置数据库连接来访问数据,它应该连接,但它不断遇到相同的错误。 完整输出
该问题与不正确的类路径或类似问题无关。我仍然不知道确切的问题是什么或为什么解决方案有效,但我只是 刷新了 jupyter 笔记本根目录的浏览器选项卡,这解决了我的问题。 多次重启内核也没用。