原文件(数据已经脱敏):

staff_id,name,age,phone,dept,enroll_date
1,姬建明,25,152015410,运维,2013-11-01
2,刘海龙,26,186184177,运维,2012-12-25
3,闫培飞,25,157016802,IT,2015-10-14
4,孙海涛,33,158206312,IT,2005-09-27
5,张亚磊,24,137338110,IT,2014-06-23
6,张松,26,136837094,IT,2013-10-08
7,刘文剑,25,155550213,SA,2014-05-21
8,魏曼,18,189108670,运维,2014-05-21
9,宋晓楠,18,110168082,测试,2014-05-21
10,吴东杭,21,177108908,运维,1995-08-29
11,李静,18,186127011,测试,2015-08-20
12,文鑫,23,181805410,无,2016-7-31
13,于洪林,31,133232639,运维,2013-6-24
14,王新凯,22,169965127,运维,2015-10-31
15,盖爽,18,185003763,运维,2015-10-28
16,张振兴,27,135214320,运维,2015-10-28
17,侯梓煜,21,186819511,运维,2016-10-31
18,张玉新,27,101241184,运维,2015-10-28
19,纪冠宇,24,150113743,运维,2015-11-12
20,李乾龙,24,185105376,运维,2015-7-13
21,杨洋,21,188131922,运维,2015-1-1
22,张泽伟,27,101029861,无,2011-2-1 如下是要求:
# 有以下员工信息表staff_table
# 1, AlexLi, 22, 13651054608, IT, 2013-04-01
# 现需要对这个员工信息文件,实现增删改查操作
# 可进行模糊查询,语法至少支持下面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"
# 查到的信息,打印后,最后面还要显示查到的条数
# 可创建新员工纪录,以phone做唯一键,staff_id需自增
# 可删除指定员工信息纪录,输入员工id,即可删除
# 可修改员工信息,语法如下:
# UPDATE staff_table SET dept = "Market" where dept = "IT"
# 注意:以上需求,要充分使用函数,请尽你的最大限度来减少重复代码!
# select * from staff_table where age < 25
自己写的代码,替换和删除后续补上:
 #查询函数
def select(column,term=[],symbol=[],option=[]):
f=open("staff_table","r",encoding="utf-8")
object = f.readline().strip().split(",") #查询column为*,不带条件,比如:select * from staff_table
if column == "*" and not term and not symbol and not option:
for line in f:
object = line.strip().split(",")
print("%s %s %s %s %s %s" % (object[0], object[1], object[2], object[3], object[4], object[5]))
exit() #查询column为*,带条件,比如:select * from staff_table where age > 25
if column == "*" and term:
show_list=[]
position = object.index(term)
for line in f:
object = line.strip().split(",")
if object[0].isdigit:
if symbol == "=":
if object[position] == option.strip('\"'):
show_list.append(object)
elif symbol == ">":
if object[position] > option.strip('\"'):
show_list.append(object)
elif symbol == "<":
if object[position] < option.strip('\"'):
show_list.append(object)
elif symbol == ">=":
if object[position] >= option.strip('\"'):
show_list.append(object)
elif symbol == "<=":
if object[position] <= option.strip('\"'):
show_list.append(object)
elif symbol == "like":
if option.strip('\"') in object[position]:
show_list.append(object)
i = 0
for i, ele in enumerate(show_list):
print("%s %s %s %s %s %s" % (ele[0], ele[1], ele[2], ele[3], ele[4], ele[5]))
print("共%s位成员%s %s %s" % (i + 1, term, symbol, option))
exit() # 查询column为自选,不带条件,比如:select name,age,dept from staff_table
if column != "*" and not term and not symbol and not option:
column = column.split(",")
position_list = []
show_list1 = []
show_list2 = []
for i in range(0,len(column)):
position = object.index(column[i])
position_list.append(position)
for line in f:
object = line.strip().split(",")
for i in range(0,len(position_list)):
show_list1.append(object[position_list[i]])
show_list2.append(show_list1)
show_list1 = []
for i in show_list2:
print(i)
exit() # 查询column为自选,带条件,比如:select name,age,dept from staff_table where dept = "运维"
if column != "*" and term:
show_list=[]
position = object.index(term)
for line in f:
object_data = line.strip().split(",")
if object_data[0].isdigit:
if symbol == "=":
if object_data[position] == option.strip('\"'):
show_list.append(object_data)
elif symbol == ">":
if object_data[position] > option.strip('\"'):
show_list.append(object_data)
elif symbol == "<":
if object_data[position] < option.strip('\"'):
show_list.append(object_data)
elif symbol == ">=":
if object_data[position] >= option.strip('\"'):
show_list.append(object_data)
elif symbol == "<=":
if object_data[position] <= option.strip('\"'):
show_list.append(object_data)
elif symbol == "like":
if option.strip('\"') in object_data[position]:
show_list.append(object_data)
column = column.split(",")
position_list = []
show_list1 = []
show_list2 = []
for i in range(0,len(column)):
position = object.index(column[i])
position_list.append(position)
for j in range(0,len(show_list)):
for i in range(0,len(position_list)):
show_list1.append(show_list[j][position_list[i]])
show_list2.append(show_list1)
show_list1 = []
for i in show_list2:
print(i)
exit() #插入函数:
def insert(name,age,phone,dept,enroll_date):
f = open("staff_table","r",encoding="utf-8")
num = 0
for line in f:
object = line.strip().split(",")
if phone == object[3]:
print("手机号重复,无法插入")
exit()
num = object[0]
f.close()
num = int(num)
num = num + 1
num = str(num)
name = name.strip('\"')
age = str(age)
phone = str(phone)
dept = dept.strip('\"')
enroll_date = enroll_date.strip('\"')
new_line = "\n"+num+","+name+","+age+","+phone+","+dept+","+enroll_date
f = open("staff_table","a",encoding="utf8")
f.write(new_line)
f.close() def update():
pass def delete():
pass msg = """
请选择:
1.查询
2.插入
3.更新
4.删除
5.退出
"""
main_dic = {
"":select,
"":insert,
"":update,
"":delete,
"":exit
} while True:
f = open("staff_table","r",encoding="utf-8")
print("成员表如下".center(40, "*"))
for line in f:
object = line.strip().split(",")
print("%s %s %s %s %s %s" % (object[0],object[1],object[2],object[3],object[4],object[5]))
print(msg)
column=[]
term=[]
symbol=[]
option=[]
choice = input("what do you want :")
if len(choice) == 0 or choice not in main_dic:continue
if choice == "":break
if choice == "":
select_sql = input("查询语句 :")
select_sql_list=select_sql.split(" ")
column = select_sql_list[1]
if len(select_sql_list) > 7:
term = select_sql_list[5]
symbol = select_sql_list[6]
option = select_sql_list[7]
main_dic[""](column,term,symbol,option)
if choice == "":
insert_sql = input("插入语句 :")
insert_sql_list = insert_sql.split(" ")
# insert into staff_table values ("terry",22,13333333,"it","2013-1-1")
column_str = insert_sql_list[4]
column_list = column_str.lstrip("(").rstrip(")").split(",")
name = column_list[0]
age = column_list[1]
phone = column_list[2]
dept = column_list[3]
enroll_date = column_list[4]
main_dic[""](name,age,phone,dept,enroll_date)

[terry笔记]对人员列表文件进行数据库操作的更多相关文章

  1. php_常用操作_读取文件_数据库操作

    作为php新手 ,把经常用到的phpcode,做个备份 1: 文件处理 //读取配置 启动是指定文件 $filepath=$argv[1]; if(null==$filepath){ echo&quo ...

  2. (二)Redis 笔记——发布&订阅、事务、数据库操作

    1. Redis 发布订阅 1.1 概述 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下 ...

  3. android菜鸟学习笔记20----Android数据存储(四))Android数据库操作

    Android内置了一个名为SQLite的关系型数据库,这是一款轻量型的数据库,操作十分简便.SQLite与别的数据库不同的是,它没有数据类型.可以保存任何类型的数据到你所想要保存的任何表的任何列中. ...

  4. Python学习笔记 (3) :列表、元组的操作

    列表,即写在方括号之间.用逗号分隔开的数值列表.列表内的项目不必全是相同的类型. >>> a = ['spam', 'eggs', 100, 1234] >>> a ...

  5. 智能POS删除文件和数据库操作步骤

    1. 2. 3. 4.winbox:日志:winboxcash:数据库:winboxcyb:其他文件: 5.删除以上三个文件夹

  6. Python之路第一课Day9--随堂笔记之一(堡垒机实例以及数据库操作)未完待续....

    一.堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: ...

  7. 数据库操作相关(sql语句-php)

    文件:db.config.smarty.php 这个文件主要是用于数据库配置 <?php $db = array( 'host'=>'localhost', 'user'=>'roo ...

  8. SpringMVC与MyBatis整合(一)——查询人员列表

    从今天开始,一点点的记录做毕设和学习的过程. 寒假才开始接触SpringMVC和MyBatis,之前对框架的概念理解并不到位,也没学过Spring.目前学习起来思路并不很清晰,有些东西我还不能理解,只 ...

  9. [terry笔记]RMAN综合学习之恢复

    [terry笔记]RMAN综合学习之备份http://www.cnblogs.com/kkterry/p/3308405.html [terry笔记]RMAN综合学习之恢复 http://www.cn ...

随机推荐

  1. Jquery Math ceil()、floor()、round()比较与用法

    Math.ceil():向上取值 如:Math.ceil(2.1) --  结果为  3 Math.ceil(-2.1)  -- 结果为-2 结论:正入 负舍 Math.floor(): 先下取值 入 ...

  2. 告诉你 SQL 数据库与 NoSQL 数据库的区别

    简单来说 SQL 数据库和 NoSQL 数据库有着共同的目标:存储数据,但存储的方式不同 一. 表 SQL中的表结构具有严格的数据模式约束: 存储数据很难出错. NoSQL存储数据更加灵活自由:可能导 ...

  3. 设置utf8编码问题

    注意:乱码和request的具体实现类有关,现在已经查到的是RequestDispatcher.forward调用前使用的是org.apache.catalina.connector.RequestF ...

  4. Dynamics CRM2013 6.1.1.1143版本号插件注冊器的一个bug

    近期在做的项目客户用的是CRM2013sp1版本号,所以插件注冊器使用的也是与之相应的6.1.1.1143,悲剧的事情也因此而開始. 在插件中注冊step时,工具里有个run in user's co ...

  5. 前端 自定义format函数

    为字符串创建format方法,用于字符串格式化  {# 前端没有字符串占位符%s的替代方法,以下是自定义字符串替换的方法,以后前端拓展方法都可以使用下面的形式 #} String.prototype. ...

  6. [十二省联考2019] 异或粽子 解题报告 (可持久化Trie+堆)

    interlinkage: https://www.luogu.org/problemnew/show/P5283 description: solution: 显然有$O(n^2)$的做法,前缀和优 ...

  7. Spark RDD概念学习系列之什么是Pair RDD

    不多说,直接上干货! 什么是Pair RDD (1)包含键值对类型的RDD被称作Pair RDD. (2)Pair RDD通常用来进行聚合计算. (3)Pair RDD通常由普通RDD做ETL转换而来 ...

  8. HD-ACM算法专攻系列(23)——Crixalis's Equipment

    题目描述: AC源码:此次考察贪心算法,解题思路:贪心的原则是使留下的空间最大,优先选择Bi与Ai差值最大的,至于为什么?这里用只有2个设备为例,(A1,B1)与(A2,B2),假设先搬运A1,搬运的 ...

  9. vs的任务列表

    前几天才刚开始看到这个 很多时候,一些任务,怕忘记了,或者已经做好的东西,由于各种原因,暂时不用等等这种情况 这时候,就可以在vs上,随时加到任务列表中,方面下次直接来修改或实现等等 在vs的视图&g ...

  10. 下拉列表的使用(Ajax/数据联动)

    下拉列表联动