• 通过读取excel数据和mysql数据库数据做对比(二)-代码编写测试


    通过上一步,环境已搭建好了。

    下面开始实战,

    首先,编写链接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操作为:好人

  • 相关阅读:
    属性
    继承
    UniApp 环境安装
    Mysql:The user specified as a definer (‘root‘@‘%‘) does not exist 的解决办法
    SpringBoot Consider defining a bean of type 'xxx' in your configuration
    js 取url各部分数据
    uniapp中使用jsencrypt
    centos8.x版本安装宝塔提示Errors during downloading metadata for repository ‘epel’报错的解决方法
    解决 JWT + SSO 报错 :Error creating bean with name 'jwtTokenServices'
    SQL server 清除缓存
  • 原文地址:https://www.cnblogs.com/kllay/p/4814183.html
Copyright © 2020-2023  润新知