您的位置:首页 > 数据库 > MySQL

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

2015-09-16 19:08 661 查看
通过上一步,环境已搭建好了。

下面开始实战,

首先,编写链接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操作为:好人
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: