python练习——moudule02——员工信息增删改查

#作业名称:员工信息的增删改查

#作业需求:
1.可进行模糊查询,语法至少支持下面3种:      select name,age from staff_table where age > 22      select * from staff_table where dept = "IT"       select * from staff_table where enroll_date like "2013"      查到的信息,打印后,最后面还要显示查到的条数    2.可创建新员工纪录,以phone做唯一键,staff_id需自增   3.可删除指定员工信息纪录,输入员工id,即可删除   4.可修改员工信息,语法如下:      UPDATE staff_table SET dept="Market" WHERE where dept = "IT"

#本次完成作业需求:用sql语句实现增删改查

代码如下:

#! /usr/bin/env python# -*- coding: utf-8 -*-# __author__ = "Q1mi"# Date: 2017/9/19import re,json# d={"1":{"name":"alex","age":‘22‘,‘phone‘:‘13651054608‘,"dept":"运维","enroll_data":"2013-04-01"}}# json.dump(d,sort_keys=True)

#Json存储def store(data):    with open(‘information.txt‘, ‘w‘) as json_file:        json_file.write(json.dumps(data))

#Json加载def load():    with open(‘information.txt‘) as json_file:        data = json.load(json_file)        return data#判断phone是否重复def phone_repete(info1,info2):    for item in info1:        info1[item]["phone"]==info2["phone"]        return True    return False

#将符合要求的查询结果转化为字符串#{‘1‘: {‘name‘: ‘Mark‘, ‘age‘: ‘22‘, ‘phone‘: ‘13651054608‘, ‘dept‘: ‘IT‘, ‘enroll_data‘: ‘2013-04-01‘}}def get_final_result(show_item,show_list):    if len(show_list)==0:        return("没有符合条件的结果")    show_final_list=[]    show_final=""    for item2 in show_list:        for i in show_item:            if i =="staff_id":                show_final_list.append(item2)            else:                show_final_list.append(show_list[item2][i])        show_final_list.append("\n")        show_final=",".join(show_final_list)    return show_final#查询def fetch(data):    #需要展示的项,如staff_id等    show_item=[]    #筛选的初步结果,字典形式    show_list={}    all_item=["staff_id","name","age","phone","dept","enroll_date"]    data1=data.split(" ")#[‘select‘, ‘*‘, ‘from‘, ‘staff_table‘, ‘where‘, ‘dept‘, ‘=‘, ‘"IT"‘]    #判断是否是select语句    if data1[0]!="select":        return("此语句不是select语句")

#检索查询项及校验    if data1[1]=="*":        show_item=all_item    else:        show_item=data1[1].split(",")        for item in show_item:            if item not in ["staff_id","name","age","phone","dept","enroll_date"]:                return("输入的查询项%s有误" %item)

#校验查询的表是否正确    if re.findall(r"from (.+?) where",data)[0]!="staff_table":        return("查询的表不存在")

#where条件    df=data1[-3].strip()    if df not in all_item or data1[-2] not in [">","=","like"]:        return("查询语句中的where条件输入有误")

#读取Json文件中的原始数据    initial_data=load()#{‘1‘: {‘name‘: ‘Mark‘, ‘age‘: ‘22‘, ‘phone‘: ‘13651054608‘, ‘dept‘: ‘IT‘, ‘enroll_date‘: ‘2013-04-01‘}}    condition=data1[-3]    symbol=data1[-2]    if condition=="staff_id":        if symbol==">":            for item in initial_data:                if item > int(data1[-1]):                    show_list[item] = initial_data[item]        if symbol=="=":            for item in initial_data:                if item > int(data1[-1]):                    show_list[item] = initial_data[item]        return get_final_result(show_item,show_list)    if condition=="age":        if symbol==">":            for item in initial_data:                if int(initial_data[item]["age"])>int(data1[-1]):                    show_list[item]=initial_data[item]        if symbol=="=":            for item in initial_data:                if initial_data[item]["age"]==int(data1[-1]):                    show_list[item]=initial_data[item]        return get_final_result(show_item,show_list)

if condition in ["name","phone","dept","enroll_date"]:        if symbol=="like":            for item in initial_data:                r=re.findall(r"%s(.+?)" %data1[-1].strip().strip(‘"‘),initial_data[item][condition])                if len(r)!=0:                    show_list[item]=initial_data[item]        if symbol=="=":            for item in initial_data:                if initial_data[item][condition]==data1[-1].strip("\\\""):                    show_list[item]=initial_data[item]        return get_final_result(show_item,show_list)

#判断添加sqldef judge_add_sql(statements):    #insert into staff_table values (‘name‘,‘age‘,‘phone‘,‘dept‘,‘enroll_date‘)    #截取输入的值    r=re.findall(r"insert into staff_table values (.+)",statements)[0].strip("(").strip(")").replace("‘",‘‘).replace(‘"‘,"")    r=r.split(",")    #没有截取到内容时    if r==None or len(r)!=5:        return False    else:        return("{‘name‘:‘%s‘,‘age‘:‘%s‘,‘phone‘:‘%s‘,‘dept‘:‘%s‘,‘enroll_date‘:‘%s‘}" %(r[0],r[1],r[2],r[3],r[4]))

#判断修改sqldef judge_update_sql(statements):    #UPDATE staff_table SET dept="Market" WHERE dept = "IT"    change= re.findall(r"UPDATE staff_table SET (.+) WHERE *",statements)    condition = re.findall(r"UPDATE staff_table SET %s WHERE (.+)" %change[0], statements)    change = change[0].split("=")    condition=condition[0].split("=")    if change[0] and change[1] and condition[0] and condition[1]:        r=[change,condition]        return r    else:        return False

#添加def add(data):    #检索输入语句是否正确    judgment=judge_add_sql(data)    if judgment==False:        return ("输入的语句有误")    else:        judgment=eval(judgment)        #判断phone是否重复        old_file=load()        k_max=1        for k in old_file:            #获取序号的最大值            if k_max<int(k):                k_max=int(k)            if old_file[k][‘phone‘]==judgment[‘phone‘]:                return(‘phone已存在‘)        k_new=k_max+1        old_file[str(k_new)]=judgment        store(old_file)        return("添加成功")#修改def updata(data):    #UPDATE staff_table SET dept="Market" WHERE dept = "IT"    flag = False    r=judge_update_sql(data)    old_file=load()    # print(old_file)    for k in old_file:        f = r[1][0].strip(" ")        if old_file[k][f]==r[1][1].strip().strip("‘").strip(‘"‘):            flag=True            old_file[k][r[0][0]] = r[0][1].strip().strip("‘").strip(‘"‘)            store(old_file)        if flag:            return("修改成功")        else:            return("输入有误")

#删除def delete(data):    old_file=load()    for k in old_file:        if k==data:            old_file.pop(data)            store(old_file)            return("删除成功")    return("未找到对应数据")

# if __main__==__name__:while True:    print(‘‘‘========================                欢迎来到员工信息系统             ------------------------                     1、查询                     2、添加                     3、修改                     4、删除                     5、退出

‘‘‘)    choice=input("请输入功能选项:")    # info="select name,age from staff_table where age > 22"    if choice.isdigit():        choice=int(choice)        if choice in [1,2,3,4]:            data = input("请输入语句:")            if choice==1:                print(fetch(data))            if choice == 2:                print(add(data))            if choice == 3:                print(updata(data))            if choice == 4:                print(delete(data))            continue        if choice==5:            print("欢迎下次再来!")            break        print("输入的数字有误,请重新输入!")    else:        print("输入有误,请重新输入!")
				
时间: 2024-11-05 18:36:04

python练习——moudule02——员工信息增删改查的相关文章

python学习之-员信息增删改查

python学习之-成员信息增删改查 主要实现了成员信息的增加,修改,查询,和删除功能,写着玩玩,在写的过程中,遇到的问题,旧新成员信息数据的合并,手机号和邮箱的验证, #!/usr/bin/env python# coding=utf8#author:[email protected] import os, sys, time,jsonimport re member_dict = \ {}member_name_list = []member_list = []def handler_mem

项目:员工信息增删改查程序

现要求写一个简单的员工信息增删改查程序,需求如下: 当然此表你在文件存储时可以这样表示 1,Alex Li,22,13651054608,IT,2013-04-01 2,Jack Wang,28,13451024608,HR,2015-01-07 3,Rain Wang,21,13451054608,IT,2017-04-01 4,Mack Qiao,44,15653354208,Sales,2016-02-01 5,Rachel Chen,23,13351024606,IT,2013-03-1

python学习之成员信息增删改查

主要实现了成员信息的增加,修改,查询,和删除功能,写着玩玩,在写的过程中,遇到的问题,旧新成员信息数据的合并,手机号和邮箱的验证, #!/usr/bin/env python# coding=utf8#author:[email protected] import os, sys, time,jsonimport re member_dict = \ {}member_name_list = []member_list = []def handler_member_storage(name,pa

员工信息增删改查程序 (大神版)

#_*_coding:utf-8_*_#第一部分:sql解析import osdef sql_parse(sql): ''' sql_parse--->insert_parse,delete_parse,update_parse,select_parse sql解析总控 :param sql:用户输入的字符串 :return: 返回字典格式sql解析结果 ''''' parse_func={ 'insert':insert_parse, 'delete':delete_parse, 'updat

SpringBoot + MyBatis 实现对员工的增删改查

SpringBoot + MyBatis 实现对员工的增删改查 一.使用idea新建SpringBoot项目 File-->New-->Project-->Spring Assistant-->Next-->修改报名,项目名等信息-->Next-->在web中选中web,在SQL中选中MySQL.JDBS.MyBatis-->Next-->Finish 二.修改pom.xml文件[之前的操作已经导入了springboot.mysql.jdbc.myba

Windows下安装MySQLdb, Python操作MySQL数据库的增删改查

这里的前提是windows上已经安装了MySQL数据库,且配置完毕,能正常建表能操作.在此基础上只需安装MySQL-python-1.2.4b4.win32-py2.7.exe就ok了,只有1M多.这个有点类似jdbc里的那个jar包. 下载链接:http://sourceforge.net/projects/mysql-python/ , 百度云盘 :http://pan.baidu.com/s/1dDgnfpR 密码:7bna 接着import MySQLdb就能使用了,下面给出测试代码:

实现学校信息增删改查-第一节添加学校名称

SSM框架实现学校信息增删改查-第一节添加学校名称 大家好!第一次写文 语句可能有些生涩,看到我不足的地方可以给我留言~ 好了,开始第一节,一个简单的添加学校名称功能~ 可以先看一下前端html代码,运行程序看一些界面效果 超级简易的一个添加页面,首先我们要知道添加是根据学校id添加信息的,请看代码哦 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

Java学生信息增删改查(并没用数据库)

一个泛型的应用,Java版本增删改查,写的简陋,望批评指正 2016-07-02 很久前写的一个程序了.拿出来存一下,不是为了展示啥,自己用的时候还可以看看.写的很粗糙. 1 import java.io.BufferedReader; 2 import java.io.File; 3 import java.io.FileNotFoundException; 4 import java.io.FileReader; 5 import java.io.IOException; 6 import

Struts2+Spring+Hibernate实现员工管理增删改查功能(一)之ssh框架整合

前言        转载请标明出处:http://www.cnblogs.com/smfx1314/p/7795837.html 本项目是我写的一个练习,目的是回顾ssh框架的整合以及使用.项目介绍:此项目主要有前台管理员通过登录进入员工管理系统页面,之后可以对员工列表进行常规的增删改查.以及部门列表的增删改查.IDE使用的是eclipse,个人感觉比较好用,不过最近我正在研究idea,数据库是mysql,前台主要以bootstrap为主. 这点是直接摘抄的 struts 控制用的 hibern