Mac(M1)环境Jupyter中Python通过JDBC连接MS SQL Server时驱动类找不到的报错求助
Mac(M1)环境Jupyter中Python通过JDBC连接MS SQL Server时驱动类找不到的报错求助
我现在在M1芯片的Mac上,用Jupyter环境里的Python尝试通过JDBC驱动连接MS SQL Server数据库。各项配置我都反复检查过了,但每次运行代码都会弹出这个报错:TypeError: Class com.microsoft.sqlserver.jdbc.SQLServerDriver is not found。
我的朋友在Windows笔记本的Jupyter环境里测试了同样的代码,完全能正常连接,可我的Mac上就是不行,想请教大家有没有遇到过类似的问题,或者能帮我排查下可能的原因?
我的环境信息:
- JDBC驱动版本:mssql-jdbc-12.8.1.jre11.jar
- JDK版本:"21.0.5"
- Mac系统版本:MacOS Sonoma (Version 14.5)
- Python版本:3.11.5
我已经确认的内容:
- JDBC驱动的路径配置正确,代码里也检测到JAR文件存在
- JAVA_HOME环境变量已经正确设置
- 使用的相关包(jpype、jaydebeapi)应该是支持M1 Mac的
我运行的代码:
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
报错情况:
每次运行代码都会触发驱动类找不到的错误,完整的报错输出显示了相关的栈追踪信息,核心错误就是TypeError: Class com.microsoft.sqlserver.jdbc.SQLServerDriver is not found。
我本来预期代码能正常连接数据库并查询数据,但现在一直卡在驱动找不到的问题上,希望大家能给点建议或者排查方向,万分感谢!
备注:内容来源于stack exchange,提问作者Siri
相关产品推荐
相关产品推荐

