删除凭证表科目中的上级科目的python脚本

上个礼拜,遇到一个坑爹的事情,就是经理要我把excel格式的凭证表(财务账套中的一个表)里除最末级科目的科目全删掉,这让并不精通office的我很头疼,因为单是一年的凭证有十几万条记录(手动的话从早删到晚都删不完啊)。后来我就想能不能,把excel导进mysql里,然后通过python处理呢?因为python操作mysql非常方便的事,最后经过一番构思写了个小程序来完成这件事了。

#coding=utf8
import MySQLdb

#删除凭证表中科目的上级科目,只保留科目的最末节科目

class conn:             #定义用于执行sql的类
    connect =  MySQLdb.connect("192.168.30.235","shiyan","123456","hongcheng")
    result = ""
    sql = ""

    def __init__(self,sql):
        self.sql = sql
    def exe(self):
        cur = self.connect.cursor()
        cur.execute(self.sql)
        self.result =  cur.fetchall()
        self.connect.commit()
        #self.connect.close()
        return self.result
    def __del__(self):
        pass

n = 4
leve01 = "____"        #一级科目通配符
del_list = []  
while n != 0:        #循环遍历除一级科目的科目,从最末节科目开始往上级科目循环
    leve01 = leve01 + n*"___"
    n = n-1
    make_sql = "select * from code_14 where kmdm like ""+leve01+"""    #加载满足条件的科目
    query01 = conn(make_sql)
    leve01 = "____"
    result1 = query01.exe()
    for list01 in result1:        #循环遍历删除当前科目的上级科目
       sjkm = list01[0][0:len(list01)-4]
        if sjkm not in del_list:        #过滤重复的上级科目
            del_list.append(sjkm)        
        

for del_km in del_list:
    sql_del = "delete from hc14 where kmdm = ""+del_km+"""    #组合删除sql
    query02 = conn(sql_del).exe()
    print sql_del    #打印删除sql

print "遍历完毕!"
原文地址:https://www.cnblogs.com/Jace06/p/6785906.html