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

如何通过SQLAlchemy连接SQL Server 2000 DSN适配Pandas?

解决SQL Server 2000与Pandas/SQLAlchemy兼容问题

方案1:绕过SQLAlchemy,直接用pyodbc构造DataFrame

既然已通过pyodbc成功建立连接,可直接执行查询并手动转换为DataFrame,避开Pandas的SQLAlchemy连接要求:

import pandas as pd
import pyodbc

# 已验证的pyodbc连接
conn = pyodbc.connect(f"DSN={DSN}; UID={UName}; PWD={Pwd}")

# 执行查询
cursor = conn.cursor()
cursor.execute("SELECT * FROM your_table_name")

# 提取列名与数据
columns = [desc[0] for desc in cursor.description]
rows = cursor.fetchall()

# 构造DataFrame
df = pd.DataFrame.from_records(rows, columns=columns)

# 清理资源
cursor.close()
conn.close()

此方法无需依赖SQLAlchemy,直接利用已生效的pyodbc连接完成数据提取,彻底规避警告和SQLAlchemy适配问题。

方案2:适配SQL Server 2000的SQLAlchemy连接配置

SQL Server 2000属于老旧版本,SQLAlchemy 2.0对其原生支持有限,需针对性调整连接参数:

  • 指定兼容SQL Server 2000的旧版ODBC驱动(如系统自带的SQL Server,而非新版ODBC Driver 17 for SQL Server)
  • 添加参数禁用SQLAlchemy的新特性,适配旧版SQL语法

示例连接代码:

from sqlalchemy import create_engine
import urllib

# 构造ODBC连接字符串
params = urllib.parse.quote_plus(
    f"DRIVER={{SQL Server}};SERVER=你的服务器地址;DATABASE=目标库名;UID={UName};PWD={Pwd}"
)
# 创建引擎并启用旧版模式
engine = create_engine(f"mssql+pyodbc:///?odbc_connect={params}", legacy_schema_aliasing=True)

# 查询生成DataFrame
with engine.connect() as conn:
    df = pd.read_sql("SELECT * FROM your_table_name", conn)

若仍提示schema_name函数未识别,需检查查询语句是否使用了SQL Server 2000不支持的函数,或强制SQLAlchemy生成兼容旧版的SQL语句。

驱动适配建议

SQL Server 2000不支持新版ODBC驱动,需安装旧版驱动:

  • 32位系统可直接使用系统自带的SQL Server ODBC驱动
  • 64位系统需安装SQL Server 2008 R2 Native Client(最后一个官方支持SQL Server 2000的驱动),安装后在ODBC数据源中选择SQL Server Native Client 10.0作为驱动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 17:03:34