删除凭证表科目中的上级科目的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 = "____"        #一级科目通配符
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]
        sql_del = "delete from hc14 where kmdm = \""+sjkm+"\""    #组合删除sql
        query02 = conn(sql_del).exe()
        print sql_del    #打印删除sql

print "遍历完毕!"
时间: 2024-08-08 22:07:38

删除凭证表科目中的上级科目的python脚本的相关文章

在ubuntu linux 中编写一个自己的python脚本

在ubuntu linux 中编写一个自己的简单的bash脚本. 实现功能:终端中输入简单的命令(以pmpy为例(play music python),为了区别之前说的bash脚本添加了py后缀),来实现音乐的播放.注:本人ununut中安装了audacious,所以就以audacious为例,来实现音乐的播放. 第一步:进入一个目录,最好是自己特别选定的,如果用文件浏览器可以新建一个名为pmpy空白文档文件:如果是用终端可以输入命令:vi pmpy(可能会因为位置问题,需要添加sudo) 第二

在pycharm中以管理员身份运行/调试脚本(How to run / debug programs as root in Pycharm)

如果想要在pycharm中以root的身份运行python脚本,因为pycharm本身好像没有这个特性,目前只能通过一些额外的手段来实现.思路就是让pycharm以root身份执行python编译器. 这篇文章主要面向linux环境. 具体可以这样做: 1.建立一个可以以root身份执行python编译器的脚本,这里命名为python_intepreter_as_root.sh #!/bin/bash echo 'mypassword' | sudo -S -E /usr/bin/python2

MYSQL中delete删除多表数据与删除关联数据

在mysql中删除数据方法有很多种,最常用的是使用delete来删除记录,下面我来介绍delete删除单条记 录与删除多表关联数据的一些简单实例. 1.delete from t1 where 条件 2.delete t1 from t1 where 条件 3.delete t1 from t1,t2 where 条件 4.delete t1,t2 from t1,t2 where 条件 前3者是可行的,第4者不可行. 也就是简单用delete语句无法进行多表删除数据操作,不过可以建立级联删除,

删除数据表中除id外其他字段相同的冗余信息

删除一个信息表中除id外其他字段都相同的冗余信息,如下 id name addr 1 a b 2 a b 3 b c 删除这个表中的冗余信息 即应该是 id name addr 1 a b 3 b c 设table为t Sql:delete from tableName where id not in (select min(id) from tableName group by name, addr…)

如何删除工作表中的网格线(gridlines)

删除工作表中的网格其实很简单,首先选中要删除网格线的工作表:如图1 图1 然后单击"视图(VIEW)"菜单,在"视图(VIEW)"菜单中,有个叫"网格线(GridLines)"的复选框:如图2: 图2 将对勾去掉即可:如图3

逆向删除属性表中的字段

删除属性表中的字段一定要注意循环的方式.如果是for循环,i< FeatureClass.Fields.FieldCount话,每删除一个字段FieldCount属性返回的字段数量将减少一个,也就是你根本不能完全删除想要删除的字段:如果你先把FeatureClass.Fields.FieldCount赋给一个变量count,for循环中使用i<count,最后导致索引越界:所以,建议使用逆向的方法删除字段. IFeatureClass pointFS = GPClass.gpUtilities

Mysql 如何删除数据表中的重复数据!

1.使用distinct查询所有不重复的记录 2.创建数据表相同结构的临时表,将第一步的数据复制进去 create temporary table if not exists student_temp as (select distinct(name), sex from student); 3.truncate table student; 4.insert into student(id,name,sex) select null,name,sex from student_temp; My

Sql Server删除数据表中重复记录 三种方法

本文介绍了Sql Server数据库中删除数据表中重复记录的方法. [项目]数据库中users表,包含u_name,u_pwd两个字段,其中u_name存在重复项,现在要实现把重复的项删除![分析]1.生成一张临时表new_users,表结构与users表一样:2.对users表按id做一个循环,每从users表中读出一个条记录,判断new_users中是否存在有相同的u_name,如果没有,则把它插入新表:如果已经有了相同的项,则忽略此条记录:3.把users表改为其它的名称,把new_use

MYSQL中delete删除多表数据

MYSQL中delete删除多表数据DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这里做了深入的解释:1. delete from t1 where 条件2.delete t1 from t1 where 条件3. delete t1 from t1,t2 where 条件4.delete t1,t2 from t1,t2 where 条件前 3者是可行的,第4者不可行.也就是简单用delete语句无法进行多表删除数据操作,不过可以建立级联删除,在两个表之间建立级联删除 关系,则