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+'\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增删改查功能的更多相关文章
- Django学习之mysql增删改查
上节介绍了如何使用命令行操作mysql增删改查,现在介绍如何使用python管理mysql 使用pip 下载完mysql后,mysql会以pymysql模块的形式存储在pycharm的包文件里.我们通 ...
- MySQL—增删改查,分组,连表,limit,union,alter,排序,去重
MySQL增删改查 在表格的增删改查中,查的内容是最多的,包括group by ,join,limit,union,alter,排序都是服务于查的 #sql语句数据行操作补充 #增加: #insert ...
- django学习-12.访问不同url/接口地址实现对指定数据的增删改查功能
1.前言 通过前面博客[django学习-10.django连接mysql数据库和创建数据表]里的操作,我们已经成功在数据库[hongjingsheng_project]里创建了一张数据表[hello ...
- IDEA搭建SSM实现登录、注册,数据增删改查功能
本博文的源代码:百度云盘/java/java实例/SSM实例/SSM实现登录注册,增删改查/IDEA搭建SSM实现登录,注册,增删改查功能.zip 搭建空的Maven项目 使用Intellij id ...
- BootstrapTable与KnockoutJS相结合实现增删改查功能
http://www.jb51.net/article/83910.htm KnockoutJS是一个JavaScript实现的MVVM框架.通过本文给大家介绍BootstrapTable与Knock ...
- springmvc+spring3+hibernate4框架简单整合,简单实现增删改查功能
转自:https://blog.csdn.net/thinkingcao/article/details/52472252 C 所用到的jar包 数据库表 数据库表就不用教大家了,一张表,很简 ...
- 使用Bootstrap模态框实现增删改查功能
模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 本文实现的是使用模态框实现简单的增删改查的功能. ...
- 3.创建Manager类,演示对TestUser进行增删改查功能
接上一篇文章 创建NHibernateHelper帮助类,生成sessionFactory http://www.cnblogs.com/fzxiaoyi/p/8443587.html 创建个新的类M ...
- 基于gin的golang web开发:mysql增删改查
Go语言访问mysql数据库需要用到标准库database/sql和mysql的驱动.标准库的Api使用比较繁琐这里再引入另一个库github.com/jmoiron/sqlx. go get git ...
随机推荐
- 浅谈.net平台下深拷贝和浅拷贝
在.net类库中,对象克隆广泛存在于各种类型的实现中,凡是实现了ICloneable接口的类型都具备克隆其对象实例的能力.所以本文讲述的深拷贝和浅拷贝也是在实现ICloneable接口的基础上进行的 ...
- AndroidHttpClient和HttpEntity详解
AndroidHttpClient结构: public final class AndroidHttpClient extends Object implements HttpClient 前言:这类 ...
- hdu 3062+1824(2-sat入门)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3062 思路:根据矛盾关系连边(如果a与b矛盾,则连边a'->b,b'->a),然后强连通缩 ...
- 【Android 多语言切换简单实例分享】
一.Android多语言切换 Android应用的开发不可能仅仅针对某一个国家或者区域使用,各国间语言文化各不同样,因此一个优秀的APP必须支持多种语言,为了实现这个特性,Android给出了一个解决 ...
- JDBC 入门
1. JDBC 简介 JDBC (Java DataBase Connectivity) 就是 Java 数据库连接, 说白了就是用 Java 语言向 数据库发送 SQL 语句. JDBC 其实是访问 ...
- 数据库垂直拆分,水平拆分利器,cobar升级版mycat(转)
原文:数据库垂直拆分,水平拆分利器,cobar升级版mycat 1,关于Mycat Mycat情报 基于阿里的开源cobar ,可以用于生产系统中,目前在做如下的一些改进: 非阻塞IO的实现,相对于目 ...
- STL中的二分查找——lower_bound 、upper_bound 、binary_search
STL中的二分查找函数 1.lower_bound函数 在一个非递减序列的前闭后开区间[first,last)中.进行二分查找查找某一元素val.函数lower_bound()返回大于或等于val的第 ...
- Selenium chrome配置不加载图片
from selenium import webdriver chrome_options = webdriver.ChromeOptions() prefs = {"profile.man ...
- centos7 安装vue
1: npm安装: 2: 报错: bash: vue: command not found 执行npm install --global vue-cli 后 执行 vue 报错 bash: vue: ...
- C++程序设计练习(一)
// 1. 在屏幕上输出内容 #include<iostream> using namespace std; int main(){ int i= 1; cout<<" ...