使用PyMySQL连接公司SQL Server:Windows身份验证适配问题
适配SQL Server Windows身份验证的连接方案
你当前用的pymysql是专门连接MySQL的库,要连SQL Server得换用pyodbc(对Windows身份验证支持更友好),具体步骤如下:
1. 安装依赖库
先安装pyodbc和配套工具,确保读写Excel的功能正常:
pip install pyodbc pandas openpyxl
2. 编写Windows身份验证的连接代码
方式一:直接用连接字符串(无需配置ODBC数据源)
这是最常用的方式,直接指定SQL Server信息,通过Trusted_Connection=yes启用Windows身份验证:
import pandas as pd import pyodbc # 替换成你的服务器名和数据库名 conn_str = ( r'DRIVER={ODBC Driver 17 for SQL Server};' r'SERVER=你的SQL服务器名;' # 示例:localhost 或者 192.168.1.100\SQLEXPRESS r'DATABASE=你的数据库名;' r'Trusted_Connection=yes;' ) # 建立连接 con = pyodbc.connect(conn_str) # 读取数据到DataFrame df = pd.read_sql("SELECT * FROM 你的目标表名", con) # 打印数据 print(df) # 导出到Excel(openpyxl支持xlsx格式,避免xls的行数限制) df.to_excel('导出数据.xlsx', index=False, engine='openpyxl') # 关闭连接 con.close()
方式二:使用已配置的ODBC数据源
如果你已经在Windows系统里配置了带Windows身份验证的ODBC数据源,可以直接用DSN连接:
import pandas as pd import pyodbc # 替换成你配置的ODBC数据源名称 con = pyodbc.connect('DSN=你的ODBC数据源名;Trusted_Connection=yes;') # 后续读取、导出代码和上面一致 df = pd.read_sql("SELECT * FROM 你的目标表名", con) print(df) df.to_excel('导出数据.xlsx', index=False, engine='openpyxl') con.close()
注意事项
- 确保你的Windows账号拥有目标SQL Server数据库的访问权限
- ODBC驱动版本要匹配SQL Server版本,推荐用
ODBC Driver 17 for SQL Server(兼容性最优) pd.read_sql是pandas当前推荐的用法,替代了旧的pandas.io.sql.read_sql
内容的提问来源于stack exchange,提问作者Donovan
相关产品推荐
相关产品推荐

