无需ODBC驱动,如何用Python连接MSSQL数据库?
使用JDBC实现Python与MSSQL数据库的连接
可以通过JDBC实现Python与MSSQL的连接,需要借助jaydebeapi库来桥接Python和JDBC驱动。你遇到的pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')错误,本质是ODBC驱动管理器找不到指定的数据源名,也无可用默认驱动,通常是未安装适配版本的MSSQL ODBC驱动或DSN配置有误,换JDBC是可行的替代方案。
具体实现步骤:
- 准备JDBC驱动:下载与你的MSSQL服务器版本兼容的
mssql-jdbc-*.jar驱动文件。 - 安装依赖库:通过pip安装
jaydebeapi,命令如下:pip install jaydebeapi - 编写连接代码:
import jaydebeapi # 配置连接参数 DRIVER_CLASS = "com.microsoft.sqlserver.jdbc.SQLServerDriver" JDBC_URL = "jdbc:sqlserver://<服务器地址>:<端口>;databaseName=<数据库名>;encrypt=true;trustServerCertificate=true" USERNAME = "<你的用户名>" PASSWORD = "<你的密码>" JAR_PATH = "/path/to/mssql-jdbc-xxx.jar" # 替换为实际的驱动jar文件路径 # 建立连接 conn = jaydebeapi.connect( DRIVER_CLASS, JDBC_URL, [USERNAME, PASSWORD], JAR_PATH ) # 测试连接 cursor = conn.cursor() cursor.execute("SELECT @@VERSION") print("数据库版本:", cursor.fetchone()[0]) # 关闭资源 cursor.close() conn.close()
注意事项:
- 确保JDBC驱动版本与MSSQL服务器版本兼容,比如SQL Server 2019建议使用mssql-jdbc 8.4及以上版本。
- 若服务器要求加密连接,需根据实际情况调整
JDBC_URL中的encrypt和trustServerCertificate参数(例如不需要证书验证时设trustServerCertificate=true)。 - 务必填写正确的jar文件路径,否则会出现驱动类找不到的错误。
内容的提问来源于stack exchange,提问作者Gayathri Chowdary
相关产品推荐
相关产品推荐

