在线QQ客服:1922638
专业的SQL Server、MySQL数据库同步软件
Python第16课:两个数据表如何比对碰撞?(一)
时间 2019-01-29下午4:00
主讲刘培富
地点 四楼电教室
任务:
在某项工作中,采集到表B,数据约10万。这一表中,是否包含重点人?需要将表B与重点人表A进行比对碰撞。已知表A数据约30万。要求:编辑python语句,用表B的gmsfhm字段与表A的gmsfhm字段进行比对碰撞,比对结果自动生成一个Excel表。
分析:
对两个数据表进行比对碰撞,在实战中使用非常频繁。对python来说,这是轻而易举的事。怎么样实现呢?需要两步:
第一步,在不考虑数据量的情况下,先搭建一个比对模型。基本思路是,先从A表中把SFZH遍历出来,存到一个列表里。然后遍历B表,用每一条记录,与列表进行比对,如果比中,则记录。
第二步,对这个模型进行实例化,面临一个问题,如何把这两个庞大的表,导入到数据库中?需要用到包xlrd
下面,对第一步进行作业:
首先,通过oracle建立两个表,分别是:
表A,表名zaitao,字段:id,xm,gmsfhm
表B,表名diandong,字段:id,xm,gmsfhm,chepai
分别向A表和B表插入一定量的数据记录。
比对代码如下:
import cx_Oracle
from time import ctime
print(“开始时间:”+ctime())
conn=cx_Oracle.connect(‘lpf/jxsr****@218.95.****:6****/orcl’)
cur=conn.cursor()
a=[]
sql=”select *from zaitao”
cur.execute(sql)
data=cur.fetchall()
for iin data:
a.append(i[2])
jg=””
sql=”select *from diandong”
cur.execute(sql)
data=cur.fetchall()
for i in data:
for j in a:
if i[2]==j:
jg+=j+”,”
cur.close()
conn.close()
print(“比对结果如下:%s”%(jg))
print(“结束时间:”+ctime())
明天接着讲,如何把Excel表的数据,读取并存入到oracl数据库中,如何用python生成Excel数据表。