01 前言
本篇很简单,但很实用,是我在工作中频繁使用的代码,超简单!小白看过来!
02 需求
根据Excel中的ID,提取数据库中此ID对应的数据,如果是两个Excel直接VLOOKUP即可,如果是在两个数据库中,只需要左连接即可,但是现在一个是在Excel中一个是在数据库中:
①要么都导进数据库进行左连接(可行,但麻烦)
②要么都导到Excel中VLOOKUP(不可行,数据库数据相当庞大,Excel完全吃不消)
③利用中间工具,也就是我今天要分享的代码
03 第三方工具介绍
我平时使用的第三方软件,是免费的finebi,powerbi应该也可以,将表导入bi,利用SQL读取数据,然后通过左连接匹配,再导出(平时会用这种方法,代码少简便易操作,但是finebi非常耗内存,因为给其他部门做的可视化报表需要使用他实时更新数据,所以无法承担临时查询的工作任务)
所以想要利用python代码来查询:①通过代码根据路径识别Excel内容,②SQL查询获取数据库数据,③联合查询,得到结果,④数据写入Excel;
步骤和前几种方法都一样,只是Python操作简单,代码简单,效率超高,速度极快。
直接上代码

代码编辑版
#①只需要两个库,pandas和pymssql,pandas处理数据必备库,pymssql是用来访问连接sql server,如果是mysql需要使用pymysql
import pandas as pd
import pymssql
#②数据库登陆连接的信息,其中charset='cp936',避免中文乱码
con=pymssql.connect(server=’ip+端口’, user='用户名', password='密码', database='数据库名称',charset='cp936')
#③下边为简单的甩sql 查询代码,这里三个引号可以允许写多行代码
sql="""SELECT distinct
cast(ltrim(rtrim([MeterNo]) ) as varchar) as '??'
,[Caliber]
FROM 数据库"""
#④使用pandas读取sql查询的数据
sql_table=pd.read_sql(sql,con)
#⑤pandas根据excel位置读取excel内容
origine_table=pd.read_excel(r"D:\数据文件\12、根据??查口径\待审核录入toPC20211019.xlsx",dtype={"Meter_id":str})
#⑥将excel和数据库查询的数据左连接
df=pd.merge(origine_table,sql_table,left_on="Meter_id",right_on="??",how="left")
df=pd.DataFrame(df,columns=["Meter_id","Caliber"])
#⑦将查询到的数据导到特定位置中,大功告成
df.to_excel(r"D:\数据文件\12、根据??查口径\处理.xlsx",index=None)
print("end")
第三方软件虽然操作简单,拖拖拽拽就可以,但是太卡了,体验感太差了,如果你的电脑配置高,当我没说,Python这时候真的很给力,小白建议收藏,以后会用到,大神请略过。