zoukankan      html  css  js  c++  java
  • 删除凭证表科目中的上级科目的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 "遍历完毕!"
  • 相关阅读:
    [AGC030F] Permutation and Minimum
    nginx
    Flex建立AS项目时,如何设定发布的舞台大小
    让Flex 支持VSS
    Flex编程实用技巧
    Flash/Flex学习笔记(57):实用技巧
    sql 2000 "无法执行查询,因为一些文件缺少或未注册"的解决办法
    Flash/Flex学习笔记(56):矩阵变换
    什么是反向代理,如何利用反向代理提高网站性能
    AS3及Flex的百条常用知识
  • 原文地址:https://www.cnblogs.com/Jace06/p/6785906.html
Copyright © 2011-2022 走看看