Chapter3.1.1 python函数小示例

来源:互联网 发布:mpacc研究生生活知乎 编辑:程序博客网 时间:2024/05/29 02:58

#函数例子

用python函数模拟mysql语句对以下文件进行操作

1,小吴吴,22,18022372331,销售,2013-11-022,王中王,32,18023257331,销售,2073-11-023,老周子,27,18012325732,销售,2013-11-024,小李子,23,18022546433,市场,2013-11-025,梁大大,42,18022564323,运营,2013-11-026,阿狗哥,32,18045662433,开发,2013-11-027,张码子,18,18031243593,技术,2013-11-388,李四弟,18,18033547293,运营,2013-11-239,李武弟,18,18031134593,管理,2013-11-2310,老板,18,11813456281,总裁,2014-11-0111,张大,18,18031145693,保安,2013-11-2312,张武,18,18031342493,采购,2013-11-2313,张六,18,18031456293,市场,2013-11-2314,张武,18,18031122293,It,2013-11-2315,老吴,15,18032111212,销售,2013-11-13



示例:

代码未实现所有功能


#!/usr/bin/env python# -*- coding:utf-8 -*-#Author:xp#blog_url: http://blog.csdn.net/wuxingpu5/article/details/71209731'''文件内容格式:   id name age phone   dep  date1,小吴,22,180222333,运维,2013-11-02增删改查 模拟sql'''#-----------------文件读取-----------------------------------def open_tab(tab_name,enco='utf-8',mod='r'):    '''读取表内容,放到字典中 ,用于查询等时候调用'''    f = open(tab_name,encoding=enco,mode=mod)    tab_info=[]    for line in f.readlines():        line = line.split(',')        tem_dict={            'id':line[0],            'name':line[1],            'age':line[2],            'phone':line[3],            'dep':line[4],            'date':line[-1]        }        tab_info.append(tem_dict)    print('all table information: ',tab_info)    f.close()    return tab_info#open_tab('db1\emp')#读取测试#--------------------查询---------------------file_name = 'db1\emp'file_tmp_name = 'db1\emp.swap'def sel_tab(tab_name,*args):    '''传入参数进行查询 分* 和其他值2种情况返回'''    tab_info = open_tab(tab_name)    print('args is: ',args)    for i in tab_info:        for x in i.values():            if args == ('*',):                res = tab_info                print(res)                exit()            else:                for item in args:                    if item == x:                        res = x                        print(res)    return res#sel_tab(file_name,'小吴吴','王中王') #查询测试#=======================增加=======================def insert_tab(*args):    '''追加函数'''    f = open(file_name,encoding='utf-8',mode='a+')    print(args)    tab_id = len(open_tab(file_name)) + 1    targ = ''    for i in args:        targ = targ + ',' + str(i)    targ_all = '\n'+ str(tab_id) + targ    print(targ_all)    f.writelines(targ_all)    f.close()#insert_tab('张武',18,18031122293,'It','2013-11-23') #调用测试#---------------------删除-----------------------def del_tabinfo(arg1):    '''删除函数'''    import os    with open(file_name,encoding='utf8',mode='r') as f, open(file_tmp_name,encoding='utf8',mode='w') as w:        for line in f.readlines():            if line.startswith(arg1):                line = ''            w.writelines(line)    os.remove(file_name)    os.rename(file_tmp_name,file_name)    pass#del_tabinfo('李四')  #调用测试#--------------改--------------def update_tab(arg1,arg2):    '''修改函数'''    import os    with open(file_name,encoding='utf8',mode='r') as f, open(file_tmp_name,encoding='utf8',mode='w') as w:        for line in f.readlines():            if arg1 in line:                line = line.replace(arg1,arg2)            w.writelines(line)    os.remove(file_name)    os.rename(file_tmp_name, file_name)#update_tab('张三','张大妈')    #调用测试#======================查询扩展函数体{def tab_list(arg1,arg2):    '''查询列对应的值'''    data=open_tab(file_name)    for i in data:      #  print(i)        v = i.get(arg1)       # print(v)        if v == arg2:            res = i            print(i)   # return res#tab_list('name','王中王')  获取键值对应的列def tab_list_like(arg1,arg2):    '''查询列对应的值'''    data=open_tab(file_name)    tab_li = []    for i in data:        print(i)        v = str(i.get(arg1,22))        print(v)#        v = int(v)        if str(arg2) in v:            print(i)#            print(i)#tab_list_like('date','2013')  #获取键值对应的列def tab_list_big(arg1,arg2):    '''查询列对应值的大小'''    data = open_tab(file_name)    for i in data:        v = i.get(arg1)        if int(v) > int(arg2):            res = i            print(arg1,'>',arg2,'的值是:',res)    #return res#tab_list_big('age','24') #年龄比较测试def tab_list_small(arg1,arg2):    '''查询列对应值的大小'''    data = open_tab(file_name)    for i in data:        v = i.get(arg1)        if int(v) < int(arg2):            res = i            print(arg1,'<',arg2,'的值是:',res)    #return res#tab_list_small('age','24') #年龄比较测试 打印小的值#======================查询扩展函数体}#-------------------------------------------------------------------------def user_input():    '''等待用户输入 进行判断然后决定用哪个函数'''    input_val = input('Please enter sql statement(请输入sql语句): ')    input_val = input_val.lower()    if input_val.startswith('insert'):        new_in = input_val.split(' ')        arg1 = new_in[-1]        arg1 = arg1.split(',')        arg1 = tuple(arg1)        insert_tab(*arg1)    elif input_val.startswith('delete'):        new_in = input_val.split(' ')        arg1 = new_in[-1]        del_tabinfo(arg1)    elif input_val.startswith('update'):        in_val = input_val.split(' ')        print(in_val)        arg1 = in_val[5]        arg2 = in_val[9]        print(arg1,arg2)        update_tab(arg1,arg2)    elif input_val.startswith('select'):        in_val=input_val.split(' ')        print(in_val)        arg1 = in_val[1]        argx = in_val[-1]        ax = in_val[-3]        print(arg1)        if '=' in input_val:          #  print('ax,argx is : ',ax,argx)            tab_list(ax,argx)        elif '>' in input_val:            tab_list_big(ax,argx)        elif '<' in input_val:            tab_list_small(ax,argx)        elif 'like' in input_val:            tab_list_like(ax,argx)        else:            sel_tab(file_name,arg1)        #sel_tab(file_name,arg1)    else:        print('''        Error grammar, please read the help documentation        (语法错误,请阅读帮助文档)        select name,age from staff_table where age > 22        select * from staff_table where dep = 运营        select * from staff_table where date like 2013        update staff_table set dep = 运维 where dep = 销售        delete * from table where id = 15        insert into table value 老吴,15,18032111212,销售,2013-11-13        ''')        #查到的条数        #可以创建员工记录,以phone做唯一键,staff_id自增        #输入id 即可删除员工信息        #修改user_input() #最终测试'''select * from db1.empselect * from tabl limit 3    #前三行select * from db1.emp where id > 24select * from db1.emp where name like 李select * from db1.emp where id > 10 and id < 14 or name like 李select * from db1.emp  not id > 24  #取反insert into db1.emp value 张三,30,1899999,运维,2015211delete from TABLE  where id > 25 #显示删除成功update db1.emp set name = 'sb' where id = 24update table   set name = 'alex' where name like sb'''


原创粉丝点击