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. 浅谈.net平台下深拷贝和浅拷贝

    在.net类库中,对象克隆广泛存在于各种类型的实现中,凡是实现了ICloneable接口的类型都具备克隆其对象实例的能力.所以本文讲述的深拷贝和浅拷贝也是在实现ICloneable接口的基础上进行的 ...

  2. AndroidHttpClient和HttpEntity详解

    AndroidHttpClient结构: public final class AndroidHttpClient extends Object implements HttpClient 前言:这类 ...

  3. hdu 3062+1824(2-sat入门)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3062 思路:根据矛盾关系连边(如果a与b矛盾,则连边a'->b,b'->a),然后强连通缩 ...

  4. 【Android 多语言切换简单实例分享】

    一.Android多语言切换 Android应用的开发不可能仅仅针对某一个国家或者区域使用,各国间语言文化各不同样,因此一个优秀的APP必须支持多种语言,为了实现这个特性,Android给出了一个解决 ...

  5. JDBC 入门

    1. JDBC 简介 JDBC (Java DataBase Connectivity) 就是 Java 数据库连接, 说白了就是用 Java 语言向 数据库发送 SQL 语句. JDBC 其实是访问 ...

  6. 数据库垂直拆分,水平拆分利器,cobar升级版mycat(转)

    原文:数据库垂直拆分,水平拆分利器,cobar升级版mycat 1,关于Mycat Mycat情报 基于阿里的开源cobar ,可以用于生产系统中,目前在做如下的一些改进: 非阻塞IO的实现,相对于目 ...

  7. STL中的二分查找——lower_bound 、upper_bound 、binary_search

    STL中的二分查找函数 1.lower_bound函数 在一个非递减序列的前闭后开区间[first,last)中.进行二分查找查找某一元素val.函数lower_bound()返回大于或等于val的第 ...

  8. Selenium chrome配置不加载图片

    from selenium import webdriver chrome_options = webdriver.ChromeOptions() prefs = {"profile.man ...

  9. centos7 安装vue

    1: npm安装: 2: 报错:  bash: vue: command not found 执行npm install --global vue-cli 后 执行 vue 报错 bash: vue: ...

  10. C++程序设计练习(一)

    // 1. 在屏幕上输出内容 #include<iostream> using namespace std; int main(){ int i= 1; cout<<" ...