Tuesday, December 30, 2008

关系去重复

起因:

        如果在关系数据库表格中发现某两个字段的数据一一对应相同,便认为是重复.要求去重。

思路:

    正常的方式是循环好几次做比对,实现起来繁琐切浪费性能,这里一种较为简单的处理办法于。

步骤:

一、基本思路:

        将此问题抽象为关系去重,两个字段之间认为是一种逻辑关系,如果两个字段都对应完全相同,则认为关系重复。

二、算法:

       

#-*- encoding: gb2312 -*-

 

import os, sys, string

import MySQLdb

 

try:

    conn = MySQLdb.connect(host='localhost',user='root',passwd='xxxx',db='test1')

except Exception, e:

    print e

    sys.exit()

 

# 获取cursor对象来进行操作

cursor = conn.cursor()

# 构建select语句

sql = select field1,field2 from table

cursor.execute(sql)

alldata = cursor.fetchall()

# 如果有数据返回,就循环输出, alldata是有个二维的列表

if alldata:

# 去掉重复的关系

    alldata = list(set(alldata))

    for i in alldata:

        print i[0],i[1]

cursor.close()

conn.close()

Tags: 算法