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+'\n') 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

python函数模拟mysql增删改查功能的更多相关文章

  1. Django学习之mysql增删改查

    上节介绍了如何使用命令行操作mysql增删改查,现在介绍如何使用python管理mysql 使用pip 下载完mysql后,mysql会以pymysql模块的形式存储在pycharm的包文件里.我们通 ...

  2. MySQL—增删改查,分组,连表,limit,union,alter,排序,去重

    MySQL增删改查 在表格的增删改查中,查的内容是最多的,包括group by ,join,limit,union,alter,排序都是服务于查的 #sql语句数据行操作补充 #增加: #insert ...

  3. django学习-12.访问不同url/接口地址实现对指定数据的增删改查功能

    1.前言 通过前面博客[django学习-10.django连接mysql数据库和创建数据表]里的操作,我们已经成功在数据库[hongjingsheng_project]里创建了一张数据表[hello ...

  4. IDEA搭建SSM实现登录、注册,数据增删改查功能

     本博文的源代码:百度云盘/java/java实例/SSM实例/SSM实现登录注册,增删改查/IDEA搭建SSM实现登录,注册,增删改查功能.zip 搭建空的Maven项目 使用Intellij id ...

  5. BootstrapTable与KnockoutJS相结合实现增删改查功能

    http://www.jb51.net/article/83910.htm KnockoutJS是一个JavaScript实现的MVVM框架.通过本文给大家介绍BootstrapTable与Knock ...

  6. springmvc+spring3+hibernate4框架简单整合,简单实现增删改查功能

    转自:https://blog.csdn.net/thinkingcao/article/details/52472252 C 所用到的jar包     数据库表 数据库表就不用教大家了,一张表,很简 ...

  7. 使用Bootstrap模态框实现增删改查功能

    模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 本文实现的是使用模态框实现简单的增删改查的功能. ...

  8. 3.创建Manager类,演示对TestUser进行增删改查功能

    接上一篇文章 创建NHibernateHelper帮助类,生成sessionFactory http://www.cnblogs.com/fzxiaoyi/p/8443587.html 创建个新的类M ...

  9. 基于gin的golang web开发:mysql增删改查

    Go语言访问mysql数据库需要用到标准库database/sql和mysql的驱动.标准库的Api使用比较繁琐这里再引入另一个库github.com/jmoiron/sqlx. go get git ...

随机推荐

  1. plsql programming 12 集合(忽略, 个人感觉用不到)

    关联数组, 嵌套表, varray 个人并不推荐使用集合, 因为操作有别于普通字段. 集合中每一个元素的数据类型都是相同的, 因此这些元素都是同质的(同质元素) 这一章的内容先忽略吧, 因为个人感觉用 ...

  2. 在linux下使用curl

    使用curl从 ftp下载文件 curl ftp://192.168.31.164/lrzsz-0.12.20.tar.gz --user root:123456 -o lrzsz-0.12.20.t ...

  3. POJ2947 DAZE [Gauss]

    题目是要求建立一个方程组: (mat[1][1]*x[1] + mat[1][2]*x[2] + - + mat[1][n]*x[n])%7 =mat[1][n+1] (mat[2][1]*x[1] ...

  4. tomcat添加crt证书

    使用keytool生成证书苹果手机添加后提示未验证,可以使用Apache的openssl生成证书导入到tomcat中. 使用Apache 生成证书:openssl genrsa 4096 > s ...

  5. Android无线测试之—UiAutomator UiDevice API介绍四

    拖拽与滑动 一.概念介绍: 1)拖拽:将组建从一个坐标移动到另一个坐标 2)移动:从一二坐标点移动到另一个坐标点 3)步长:从一点滑动到另一点使用的时间 二.拖拽与滑动的相关API: 返回值 方法名 ...

  6. ios关于数据的存储

    本文转载至http://blog.csdn.net/chen505358119/article/details/9278539             这里我总结了一下数据的存储方式,一是保存在沙盒里 ...

  7. CentOS7上elasticsearch5.0启动失败

    CentOS7上elasticsearch5.0启动失败 刚一启动完直接就退出了 $ ./elasticsearch ... ERROR: bootstrap checks failed max fi ...

  8. Shell脚本实现用户数据导入

    #输入:固定格式的用户数据user.sql #处理:循环读取user.sql中的每行(每行对应一条用户数据),依次调用curl命令将用户插入BearyChat #输出:执行结果输出到日志文件outlo ...

  9. WCF基础之传输

    WCF中使用的主要传输的方式有HTTP,TCP和命名管道. 绑定包括可选的协议绑定元素(如安全),必需的编码绑定元素和必须的传输协定绑定元素三个部分,而由传输方式则是由传输绑定元素来决定的. HTTP ...

  10. Sql注入基础一

    凡是带入数据库查询的都有可能是注入.     整个数据包 Sql注入原理? 网站数据传输中,接受变量传递的值未进行过滤,导致直接带入数据库查询执行的操作问题. Sql注入对于渗透的作用? 获取数据(网 ...