美文网首页
Python第16课:两个数据表如何比对碰撞?(一)

Python第16课:两个数据表如何比对碰撞?(一)

作者: 启蒙时代 | 来源:发表于2019-01-29 20:25 被阅读0次

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数据表。

相关文章

网友评论

      本文标题:Python第16课:两个数据表如何比对碰撞?(一)

      本文链接:https://www.haomeiwen.com/subject/wmobjqtx.html