python - 通过 pyodbc 连接 python 和 SQL 时出现问题(未指定默认驱动程序)
问题描述
我在通过 pyodbc 连接 SQL 和 python 时遇到问题。
我已经尝试了系统中的大多数驱动程序名称和包含项,但我一直遇到同样的问题。
代码:
import pyodbc
conn = pyodbc.connect(
"Driver='{SQL Server Native Client 11.0}';"
"Server = server;"
"Database = db;"
"username = xxx;"
"password = xxxxxxxxx;"
"Trusted_Connection = yes;")
cursor = conn.cursor()
cursor.execute('SELECT * FROM db.table')
for row in cursor:
print(row)
错误:
InterfaceError Traceback (most recent call last)
<ipython-input-36-04dae4d66996> in <module>()
1 import pyodbc
2 conn = pyodbc.connect(
----> 3 "Driver='{SQL Server Native Client 11.0}';"
4 "Server = server;"
5 "Database = db;"
InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
解决方案
ODBC Driver 17 for SQL Server是您需要使用的标准驱动程序。它涵盖了大多数用例。如果您执行以下操作,它将列出您尝试运行的机器上可用的所有驱动程序。
pyodbc.drivers()
如果ODBC Driver 17 for SQL Server不在列表中,则需要从 microsoft 站点下载安装它。
推荐阅读
- python - Pygame 已经安装;但是,python终端说“没有名为'pygame'的模块”(Ubuntu 20.04.1)
- python - 如何从用户输入的列表中一次打印一个单词?
- sql-server - 尝试在 SQL Server 中将数字转换为 bigint
- mongodb-atlas - Cloud Atlas MongoDB - 将集合克隆到新集合
- sql - 如何在 Oracle SQL Developer 中自定义日期格式?
- javascript - 如何使用 JavaScript 检查元素在视口中是否半可见?
- rust - 为什么 Rust 堆栈帧这么大?
- postgresql - Postgres 12 MATERIALIZED CTE 更快
- xml - XSLT - foreach 在同一行的结果
- javascript - 在 JS ES6 类中强制使用 setter 而不是直接赋值