import pyodbc def check_drivers(): print("正在扫描系统 ODBC 驱动...\n") try: drivers = pyodbc.drivers() except Exception as e: print(f"❌ 错误: 无法读取驱动列表。原因: {e}") return if not drivers: print("❌ 未找到任何 ODBC 驱动。") return print(f"✅ 共发现 {len(drivers)} 个驱动:") print("=" * 50) for d in drivers: print(f" • {d}") print("=" * 50) print("\n[配置建议]") # --- 1. 寻找 SQL Server 驱动 --- # 优先级:ODBC Driver 18 > 17 > 13 > Native Client > SQL Server (旧) sql_candidates = [d for d in drivers if "SQL Server" in d] best_sql = None # 简单的版本优先级判断 if any("ODBC Driver 18" in d for d in sql_candidates): best_sql = "ODBC Driver 18 for SQL Server" elif any("ODBC Driver 17" in d for d in sql_candidates): best_sql = "ODBC Driver 17 for SQL Server" elif any("ODBC Driver 13" in d for d in sql_candidates): best_sql = "ODBC Driver 13 for SQL Server" elif sql_candidates: best_sql = sql_candidates[0] # 随便取一个其他的 if best_sql: print(f"👉 SQL Server 驱动 (填入 config.py): {{{best_sql}}}") else: print("⚠️ 未找到 SQL Server 驱动,请下载安装 'ODBC Driver 17 for SQL Server'") # --- 2. 寻找 Access 驱动 --- acc_candidates = [d for d in drivers if "Access Driver" in d] if acc_candidates: print(f"👉 Access 驱动 (填入 config.py): {{{acc_candidates[0]}}}") else: print("⚠️ 未找到 Access 驱动,请下载安装 'Access Database Engine'") if __name__ == "__main__": check_drivers()