前提条件:安装 ODBC 驱动
这是最关键的一步!pypyodbc 本身只是一个“桥梁”,它需要你系统上已经安装了对应数据库的 ODBC 驱动程序,没有驱动,pypyodbc 无法连接到任何数据库。

你需要根据你要连接的数据库,安装相应的 ODBC 驱动:
- Microsoft SQL Server: Microsoft ODBC Driver for SQL Server
- MySQL: MySQL Connector/ODBC
- PostgreSQL: PostgreSQL ODBC driver (psqlODBC)
- Oracle: Oracle ODBC Driver
- SQLite: Windows 和 macOS 通常自带 SQLite ODBC 驱动,Linux 上可能需要单独安装(
unixODBC和sqlite3-odbc)。
如何检查驱动是否安装? 你可以使用一个小脚本来列出系统上所有可用的 ODBC 驱动:
import pypyodbc
# 获取所有已安装的 ODBC 驱动名称
drivers = pypyodbc.drivers()
print("已安装的 ODBC 驱动:")
for driver in drivers:
print(f"- {driver}")
运行这个脚本,如果你在输出中看到了你需要的数据库驱动("ODBC Driver 17 for SQL Server"),那就说明驱动已经正确安装了。
安装 pypyodbc
打开你的终端或命令提示符,然后执行以下命令:

pip install pypyodbc
如果你使用的是 Python 3,并且系统中有多个 Python 版本,建议使用 pip3:
pip3 install pypyodbc
安装过程:
由于 pypyodbc 是纯 Python 包,pip 会直接从 Python Package Index (PyPI) 下载并安装,无需编译,所以通常非常快。
验证安装
安装完成后,你可以通过在 Python 解释器中导入它来验证是否安装成功:
>>> import pypyodbc >>> print(pypyodbc.__version__) # 如果没有报错,并输出版本号,说明安装成功。
使用示例
下面是一个连接到 Microsoft SQL Server 并执行简单查询的示例代码。

注意: 在运行之前,请确保:
- 你的 SQL Server 服务正在运行。
- 你有正确的服务器地址、数据库名称、用户名和密码。
- 你的系统上已经安装了对应版本的 SQL Server ODBC 驱动。
import pypyodbc
# --- 1. 定义连接字符串 ---
# 这里的 DRIVER 名称必须与你在“前提条件”步骤中查看到的驱动名称完全一致!
# 对于 SQL Server 2025 及以上,通常是 "ODBC Driver 17 for SQL Server"
# 对于旧版本,可能是 "ODBC Driver for SQL Server" 等。
connection_string = (
"DRIVER={ODBC Driver 17 for SQL Server};"
"SERVER=your_server_name;" # 你的服务器地址,如 localhost 或 192.168.1.100
"DATABASE=your_database_name;" # 你的数据库名
"UID=your_username;" # 你的用户名
"PWD=your_password;" # 你的密码
)
try:
# --- 2. 建立连接 ---
# pypyodbc.connect() 函数用于建立数据库连接
conn = pypyodbc.connect(connection_string)
print("成功连接到数据库!")
# --- 3. 创建一个游标对象 ---
# 游标用于执行 SQL 查询并获取结果
cursor = conn.cursor()
# --- 4. 执行 SQL 查询 ---
sql_query = "SELECT TOP 3 * FROM your_table_name;" # 替换成你的表名
cursor.execute(sql_query)
# --- 5. 获取并打印结果 ---
# fetchone() 获取一行数据
# fetchall() 获取所有数据
rows = cursor.fetchall()
print("\n查询结果:")
for row in rows:
print(row)
# --- 6. 关闭连接 ---
# 好的实践是关闭游标和连接
cursor.close()
conn.close()
print("\n连接已关闭。")
except pypyodbc.Error as e:
print(f"连接或查询数据库时出错: {e}")
常见问题与解决方案
问题 1: pypyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC 驱动程序管理器] 未找到数据源名称并且未指定默认驱动程序 (0) (SQLDriverConnectW)')
- 原因: 这是最常见的错误,它意味着
pypyodbc找不到你在连接字符串中指定的DRIVER。 - 解决方案:
- 运行上面提供的“检查驱动”脚本,确认你的 ODBC 驱动是否已安装。
- 检查连接字符串中的
DRIVER={...}部分,名称必须与驱动列表中的名称完全一致,包括大小空格和版本号("ODBC Driver 17 for SQL Server" 和 "ODBC Driver 13 for SQL Server" 是不同的)。
问题 2: pypyodbc.Error: ('01000', '[01000] [Microsoft][ODBC 驱动程序管理器] 无法打开注册表关键字 'Temporary (volatile) DSN for 64-bit ODBC Driver Manager' (0) (SQLDriverConnectW)')
- 原因: 这通常发生在 64 位 Python 尝试使用 32 位 ODBC 驱动管理器,或者反之亦然,你的 Python 版本(32位/64位)必须与你安装的 ODBC 驱动管理器版本匹配。
- 解决方案:
- 确定你的 Python 是 32 位还是 64 位,可以在 Python 中运行
import struct; print(struct.calcsize("P") * 8),输出 32 或 64。 - 确保你安装的 ODBC 驱动与你的 Python 架构一致,现代系统默认是 64 位的。
- 确定你的 Python 是 32 位还是 64 位,可以在 Python 中运行
问题 3: 在 Linux 上安装
在 Linux(如 Ubuntu)上,除了安装 pypyodbc 包本身,还需要安装 ODBC 的管理库和对应的数据库驱动。
在 Ubuntu 上安装 SQL Server ODBC 驱动:
# 更新包列表 sudo apt-get update # 安装 ODBC 驱动管理器和用于 SQL Server 的驱动 sudo apt-get install unixodbc unixodbc-dev odbcinst # 下载并安装 Microsoft ODBC Driver for SQL Server for Linux # (具体步骤请参考 Microsoft 官方文档,通常会有一个 .deb 或 .rpm 包)
希望这份详细的指南能帮助你成功安装和使用 pypyodbc!
