使用ADODB连接SQL数据库遇问题及pyodbc驱动报错求助
SQL数据库连接问题排查与解决
一、ADODB连接无报错但无数据的排查点
- 先确认
myserver、mydatabase、user、password这几个变量有没有正确赋值,别写错或者留空了 - 去数据库客户端里跑一遍
SELECT * FROM DocumentInvoiceDetail,看看表本身是不是真的没有数据 - ADODB的Recordset要先判断有没有数据再取,比如加个判断:
if not rs.EOF: t = rs.GetRows() else: t = [] # 空结果集处理 - 可以加个调试,打印
rs.RecordCount看看记录数,确认是不是真的没返回数据 - 连接字符串拼接容易出问题,换成格式化写法更稳妥:
DSN = f'Provider=SQLOLEDB.1;DATA SOURCE={myserver};Initial Catalog={mydatabase};UID={user};pwd={password}'
二、adodbapi安装失败的解决办法
- 试试指定稳定版本安装:
pip install adodbapi==2.6.0.7 - 检查Python的位数(32/64位)和系统是否匹配,架构不兼容也会装不上
- 国内环境换镜像源安装:
pip install adodbapi -i https://pypi.tuna.tsinghua.edu.cn/simple
三、pyodbc驱动错误的解决(已自行解决)
原错误Data source name not found and no default driver specified是因为指定的Devart ODBC Driver for SQL Server没装或者配置不对,换成系统自带的SQL Server驱动就正常了,最终可用代码:
import pyodbc from pprint import pp cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=server;DATABASE=database;UID=user;PWD=pw') cursor = cnxn.cursor()
另外提一句,也可以用更现代的ODBC Driver 17 for SQL Server驱动,兼容性更好,连接字符串改成:DRIVER={ODBC Driver 17 for SQL Server};SERVER=server;DATABASE=database;UID=user;PWD=pw
内容的提问来源于stack exchange,提问作者Clayton Hua
相关产品推荐
相关产品推荐

