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

如何在Python中用SQLAlchemy通过Windows认证连接网络MS SQL Server

使用Windows认证通过SQLAlchemy连接MS SQL Server并读取数据

我完全懂你的困扰——SQLAlchemy文档里确实更多展示SQL认证的示例,但Windows认证的场景其实非常常见,配置起来也没那么复杂,我来给你一步步梳理清楚:

首先,先确保你安装了必要的依赖包,SQLAlchemy连接MS SQL通常用pyodbc驱动,所以先执行:

pip install sqlalchemy pyodbc pandas

接下来分两种常用的连接方式,你可以根据自己的需求选择:

方式一:基于ODBC DSN的连接

如果你已经在Windows系统里配置了MS SQL的ODBC数据源(DSN),并且配置时选择了Windows认证,那么连接字符串会非常简洁:

import pandas as pd
from sqlalchemy import create_engine

# 替换成你自己配置的DSN名称
engine = create_engine("mssql+pyodbc://@YourDSNName")

# 读取目标表,可指定schema(比如dbo),留空则用默认schema
df = pd.read_sql_table("YourTableName", con=engine, schema="dbo")

# 查看数据示例
print(df.head())

这里@前面留空,就是告诉SQLAlchemy直接使用当前Windows登录账号进行认证,不需要额外输入用户名和密码。

方式二:无DSN直接配置连接参数

如果不想提前配置ODBC数据源,也可以直接在连接字符串里指定所有参数,灵活性更高:

import pandas as pd
from sqlalchemy import create_engine

# 构建连接字符串,替换成你的服务器、数据库信息
conn_string = (
    "mssql+pyodbc:///?odbc_connect="
    "DRIVER={ODBC Driver 17 for SQL Server};"  # 推荐用这个版本的驱动,兼容性更好
    "SERVER=YourServerName\\YourInstanceName;"  # 有实例名的话加\\,比如SERVER=DESKTOP-XXX\\SQLEXPRESS
    "DATABASE=YourDatabaseName;"
    "Trusted_Connection=yes;"
)

engine = create_engine(conn_string)

# 还可以指定要读取的列,缩小数据范围
df = pd.read_sql_table("YourTableName", con=engine, columns=["col1", "col2", "col3"])

print(df.head())

一些关键注意事项

  • 确保你的Windows账号拥有访问目标SQL Server数据库的权限,服务器端要开启Windows认证登录方式。
  • 如果是远程服务器,要检查网络连通性:比如能否ping通服务器,SQL Server默认端口1433是否开放。
  • 驱动版本要匹配你的SQL Server版本,新版本SQL Server推荐用ODBC Driver 17/18,老版本可以用SQL Server Native Client 11.0。

内容的提问来源于stack exchange,提问作者Jimmy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:29:40