You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 09:48:07