zoukankan      html  css  js  c++  java
  • python函数模拟mysql增删改查功能

    import os
    list1 = ['staff_id', 'name', 'age', 'phone', 'dept', 'enroll_date']
    def staff_info():
        #获取员工信息生成器函数
        with open('staff_table.txt', 'r', encoding='utf-8') as f:
                for line in f :
                 x =line.split(',')
                 staff_dic = {k: v for (k, v) in zip(list1,x)}
                 yield staff_dic
    
    def select_func(select_content,start,middle,end):
        #查找函数
        if middle == '=':
            middle = '=='
    
        if select_content == '*':
            content = list1
        else:
            content = select_content.split(',')
    
        total_check = 0
        for i in staff_info():
            list = []
            for j in content:
                list.append(i[j])
            #查找需要列出的项
            if middle == 'like':
                l=len(end)
                if eval(i[start][:l] + '==' +end ):
                    print(list)
                    total_check+=1
            else:
                s = i[start]
                e = end
                if eval("s"+middle+"e"):
                    print(list)
                    total_check+=1
    
        print('相关查询共计%s'%total_check)
    
    def insert_func(list):
        #添加功能函数,添加的内容以列表写入
        with open('staff_table.txt','r+',encoding='utf-8') as f:
            #判断手机号是否重复,若重复报错退出
            for line in f:
                if list[2] in line:
                    print('err information')
                    return
            #不重复的添加内容
            f.seek(0)
            info=f.readlines()
            staff_id=info[-1].split(',')
            staff_id=int(staff_id[0])+1
            f.seek(0,2)
            s=''
            for i in list:
                if type(i)==int:
                    i=str(i)
                s=s+','+i
            f.write(str(staff_id)+s+'
    ')
    
    def delete_func(staff_id):
        #删除信息函数
        with open('staff_table.txt','r+',encoding='utf_8') as f, 
             open('new.txt','w',encoding='utf-8') as f1:
            for line in f:
                if staff_id == line[0]:
                    line=''
                f1.write(line)
        os.remove('staff_table.txt')
        os.rename('new.txt','staff_table.txt')
    
    def modify_func(oldcontent,newcontent):
        #修改函数
        with open('staff_table.txt','r+',encoding='utf_8') as f, 
             open('new.txt','w',encoding='utf-8') as f1:
            for line in f:
                if oldcontent in line:
                    line=line.replace(oldcontent,newcontent)
                f1.write(line)
        os.remove('staff_table.txt')
        os.rename('new.txt','staff_table.txt')
    
    def run_func():
       #运行函数
       while 1:
           cmd=input('>>>: ')
           if cmd == 'quit':
               break
           else:
               cmd=cmd.split()
               if cmd[0] == 'select':
                   end=cmd[-1]
                   start=cmd[-3]
                   middle=cmd[-2]
                   select_content=cmd[1]
                   select_func(select_content,start,middle,end)
               elif cmd[0] == 'insert':
                   list=cmd[1].split(',')
                   insert_func(list)
               elif cmd[0].lower() == 'update':
                   oldcontent=cmd[-1]
                   newcontent=cmd[5]
                   modify_func(oldcontent,newcontent)
               elif cmd[0] == 'delete':
                   staff_id=cmd[1]
                   delete_func(staff_id)
               else:
                   print('err input')
    
    run_func()

    staff_table.txt 里的内容:

    1,Alex Li,22,13651054608,IT,2013-04-01
    2,Jack Wang,30,13304320533,HR,2015-05-03
    3,Rain Liu,25,1383235322,Sales,2016-04-22
    4,Mack Cao,40,1356145343,HR,2009-03-01

    因能力有限,命令格式请遵循下列说明
    • 查询命令格式:select age,name from satff_table where dept == IT/age > 20/其他条件
    • 修改命令格式:update staff_table set dept = market where where dept = IT
    • 增加命令格式:insert mona, 15, 13693041938, IT, 2016-09-04
    • 删除命令格式:delete 1
  • 相关阅读:
    Dask教程
    python程序—利用socket监控端口
    python程序—封装案例
    python程序—士兵出击
    Python三大神器:装饰器,迭代器,生成器
    python程序—名片管理系统
    python程序—系统检测
    python程序—用户登录
    (七)javac编译
    Unity系统消息广播
  • 原文地址:https://www.cnblogs.com/mona524/p/7043867.html
Copyright © 2011-2022 走看看