通过上一步,环境已搭建好了。
下面开始实战,
首先,编写链接mysql的函数conn_sql.py
import pymysql def sql_conn(u,pwd,h,db): conn=pymysql.connect(user=u,passwd=pwd,host=h,db=db) #print("连接数据库"+db+"成功了!!") return conn
在编写,查询数据库的语句:sql.py
import pymysql import conn_sql def dd_cz(dd_h): conn=conn_sql.sql_conn("数据库连接名称","数据库密码","数据库ip","数据库名称") cursor=conn.cursor() cursor.execute("select count(id) from user where ordnum=%s",dd_h) data=cursor.fetchone() #print('data=',data) return data
注意点:(在测试时,有一个问题就是,在cursor.execute("select count(id) from user where ordnum=%s" % dd_h) 这句话中的参数引导时,如果换成%号,会出现数据库报错。所以一定要用,)
在创建zx_duibi.py
import xlrd,sys import xdrlib import os from sql import dd_cz #打开Excel文件读取数据 def open_excel(file="1.xls"): try: data=xlrd.open_workbook(file) print("open sucess!") return data except Exception: print(str(e)) #根据索引获取Excel表格中的数据 #参数:file:Excel文件路径 colnameindex:表头列名所在行的索引 #by_index:表的索引 def excel_table_byindex(file="1.xls",colnameindex=0,by_index=0): #打开表 data=open_excel(file) #获取工作表 table=data.sheets()[by_index] nrows=table.nrows #行数 #获取某一行数据 colnames=table.row_values(colnameindex) list=[] #3跳转行数 for rownum in range(1,nrows): #获取某一行的值 row=table.row_values(rownum) if row: col_l={} col_l[colnames[3]]=row[3] list.append(col_l) return list def main(): tables=excel_table_byindex() #excel总数 i=0 #不存在的 j=0 for row in tables: #根据exl表中的数据,查询数据库中的数据 ddh=dd_cz(row["列标题"]) #列标题是否存在 ddh_cz=ddh[0] if ddh_cz == 0: print("列标题:%s,不存在"%(row["列标题"])) j+=1 else: print("存在:%s"%(row["列标题"])) i+=1 print("总数为:%s" % i ) print("不存在为:%s"%j) if __name__=="__main__": main()
至此根据excel的数据和数据中的数据做对比的程序就ok了
参考文档:
mysql操作为:好人
excel操作为:好人