Python新手求助:编写脚本对比Excel列与SQL表中的用户名
实现Excel用户名与SQL数据库比对的Python脚本
Hey there! 作为Python新手想自动化日常重复工作,这个需求完全可以轻松实现,我给你一步步拆解方案,代码里会加详细注释,方便你理解:
首先,咱们得先准备好需要用到的Python库,都是新手友好、文档完善的工具:
pandas:用来快速读取Excel工作表内容pyodbc:适配大多数SQL数据库(比如SQL Server;如果是MySQL/PostgreSQL,换pymysql/psycopg2就行)
先打开终端安装这些库:
pip install pandas pyodbc
1. 完整脚本(带注释)
把所有步骤整合起来,你只需要替换脚本里的占位信息(比如文件路径、数据库连接信息)就能直接用:
import pandas as pd import pyodbc def main(): # -------------------------- # 第一步:读取Excel中的用户名列表 # -------------------------- excel_path = "你的Excel文件路径.xlsx" # 替换成你的实际文件路径 try: # 只读取"new_it_users"工作表的A列,避免加载多余数据 df = pd.read_excel(excel_path, sheet_name="new_it_users", usecols="A") # 提取A列数据,去掉空值后转成列表 username_list = df.iloc[:, 0].dropna().tolist() if not username_list: print("Excel的A列里没有找到有效的用户名哦") return except Exception as e: print(f"读取Excel时出错了:{e}") return # -------------------------- # 第二步:连接SQL数据库,获取已存在的用户名 # -------------------------- # 替换成你的数据库连接信息(这里以SQL Server为例) conn_str = ( r"DRIVER={SQL Server};" r"SERVER=你的数据库服务器地址;" r"DATABASE=你的数据库名称;" r"UID=你的数据库用户名;" r"PWD=你的数据库密码;" ) existing_usernames = [] try: # 用with语句自动管理连接,避免忘记关闭 with pyodbc.connect(conn_str) as conn: cursor = conn.cursor() # 查询ituserlist表的所有用户名 cursor.execute("SELECT username FROM ituserlist") # 把查询结果提取成列表 existing_usernames = [row[0] for row in cursor.fetchall()] except pyodbc.Error as e: print(f"数据库连接或查询出错了:{e}") return # -------------------------- # 第三步:比对用户名,输出结果 # -------------------------- print("=== 用户名比对结果 ===") for username in username_list: if username in existing_usernames: print(f"✅ *{username}* 已存在于数据库中") else: print(f"❌ *{username}* 不存在于数据库中") if __name__ == "__main__": main()
新手适配提示
- 如果用的是MySQL:把
pyodbc换成pymysql,连接代码改成下面这样:import pymysql conn = pymysql.connect( host='你的服务器地址', user='你的数据库用户名', password='你的数据库密码', database='你的数据库名' ) - 记得处理Excel里的空值:脚本里已经用
dropna()过滤了A列的空单元格,避免报错 - 测试前确认:数据库服务是开启的,你有对应数据库的访问权限
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

