[terry笔记]对人员列表文件进行数据库操作

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

staff_id,name,age,phone,dept,enroll_date1,姬建明,25,152015410,运维,2013-11-012,刘海龙,26,186184177,运维,2012-12-253,闫培飞,25,157016802,IT,2015-10-144,孙海涛,33,158206312,IT,2005-09-275,张亚磊,24,137338110,IT,2014-06-236,张松,26,136837094,IT,2013-10-087,刘文剑,25,155550213,SA,2014-05-218,魏曼,18,189108670,运维,2014-05-219,宋晓楠,18,110168082,测试,2014-05-2110,吴东杭,21,177108908,运维,1995-08-2911,李静,18,186127011,测试,2015-08-2012,文鑫,23,181805410,无,2016-7-3113,于洪林,31,133232639,运维,2013-6-2414,王新凯,22,169965127,运维,2015-10-3115,盖爽,18,185003763,运维,2015-10-2816,张振兴,27,135214320,运维,2015-10-2817,侯梓煜,21,186819511,运维,2016-10-3118,张玉新,27,101241184,运维,2015-10-2819,纪冠宇,24,150113743,运维,2015-11-1220,李乾龙,24,185105376,运维,2015-7-1321,杨洋,21,188131922,运维,2015-1-122,张泽伟,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
自己写的代码,替换和删除后续补上:
  1 #查询函数
  2 def select(column,term=[],symbol=[],option=[]):
  3     f=open("staff_table","r",encoding="utf-8")
  4     object = f.readline().strip().split(",")
  5
  6     #查询column为*,不带条件,比如:select * from staff_table
  7     if column == "*" and not term and not symbol and not option:
  8         for line in f:
  9             object = line.strip().split(",")
 10             print("%s %s %s %s %s %s" % (object[0], object[1], object[2], object[3], object[4], object[5]))
 11         exit()
 12
 13     #查询column为*,带条件,比如:select * from staff_table where age > 25
 14     if column == "*" and term:
 15         show_list=[]
 16         position = object.index(term)
 17         for line in f:
 18             object = line.strip().split(",")
 19             if object[0].isdigit:
 20                 if symbol == "=":
 21                     if object[position] == option.strip(‘\"‘):
 22                         show_list.append(object)
 23                 elif symbol == ">":
 24                     if object[position] > option.strip(‘\"‘):
 25                         show_list.append(object)
 26                 elif symbol == "<":
 27                     if object[position] < option.strip(‘\"‘):
 28                         show_list.append(object)
 29                 elif symbol == ">=":
 30                     if object[position] >= option.strip(‘\"‘):
 31                         show_list.append(object)
 32                 elif symbol == "<=":
 33                     if object[position] <= option.strip(‘\"‘):
 34                         show_list.append(object)
 35                 elif symbol == "like":
 36                     if  option.strip(‘\"‘) in object[position]:
 37                         show_list.append(object)
 38         i = 0
 39         for i, ele in enumerate(show_list):
 40             print("%s %s %s %s %s %s" % (ele[0], ele[1], ele[2], ele[3], ele[4], ele[5]))
 41         print("共%s位成员%s %s %s" % (i + 1, term, symbol, option))
 42         exit()
 43
 44     # 查询column为自选,不带条件,比如:select name,age,dept from staff_table
 45     if column != "*" and not term and not symbol and not option:
 46         column = column.split(",")
 47         position_list = []
 48         show_list1 = []
 49         show_list2 = []
 50         for i in range(0,len(column)):
 51             position = object.index(column[i])
 52             position_list.append(position)
 53         for line in f:
 54             object = line.strip().split(",")
 55             for i in range(0,len(position_list)):
 56                 show_list1.append(object[position_list[i]])
 57             show_list2.append(show_list1)
 58             show_list1 = []
 59         for i in show_list2:
 60             print(i)
 61         exit()
 62
 63     # 查询column为自选,带条件,比如:select name,age,dept from staff_table where dept = "运维"
 64     if column != "*" and term:
 65         show_list=[]
 66         position = object.index(term)
 67         for line in f:
 68             object_data = line.strip().split(",")
 69             if object_data[0].isdigit:
 70                 if symbol == "=":
 71                     if object_data[position] == option.strip(‘\"‘):
 72                         show_list.append(object_data)
 73                 elif symbol == ">":
 74                     if object_data[position] > option.strip(‘\"‘):
 75                         show_list.append(object_data)
 76                 elif symbol == "<":
 77                     if object_data[position] < option.strip(‘\"‘):
 78                         show_list.append(object_data)
 79                 elif symbol == ">=":
 80                     if object_data[position] >= option.strip(‘\"‘):
 81                         show_list.append(object_data)
 82                 elif symbol == "<=":
 83                     if object_data[position] <= option.strip(‘\"‘):
 84                         show_list.append(object_data)
 85                 elif symbol == "like":
 86                     if  option.strip(‘\"‘) in object_data[position]:
 87                         show_list.append(object_data)
 88         column = column.split(",")
 89         position_list = []
 90         show_list1 = []
 91         show_list2 = []
 92         for i in range(0,len(column)):
 93             position = object.index(column[i])
 94             position_list.append(position)
 95         for j in range(0,len(show_list)):
 96             for i in range(0,len(position_list)):
 97                 show_list1.append(show_list[j][position_list[i]])
 98             show_list2.append(show_list1)
 99             show_list1 = []
100         for i in show_list2:
101             print(i)
102         exit()
103
104 #插入函数:
105 def insert(name,age,phone,dept,enroll_date):
106     f = open("staff_table","r",encoding="utf-8")
107     num = 0
108     for line in f:
109         object = line.strip().split(",")
110         if phone == object[3]:
111             print("手机号重复,无法插入")
112             exit()
113         num = object[0]
114     f.close()
115     num = int(num)
116     num = num + 1
117     num = str(num)
118     name = name.strip(‘\"‘)
119     age = str(age)
120     phone = str(phone)
121     dept = dept.strip(‘\"‘)
122     enroll_date = enroll_date.strip(‘\"‘)
123     new_line = "\n"+num+","+name+","+age+","+phone+","+dept+","+enroll_date
124     f = open("staff_table","a",encoding="utf8")
125     f.write(new_line)
126     f.close()
127
128
129 def update():
130     pass
131
132 def delete():
133     pass
134
135 msg = """
136 请选择:
137 1.查询
138 2.插入
139 3.更新
140 4.删除
141 5.退出
142 """
143 main_dic = {
144     "1":select,
145     "2":insert,
146     "3":update,
147     "4":delete,
148     "5":exit
149 }
150
151
152 while True:
153     f = open("staff_table","r",encoding="utf-8")
154     print("成员表如下".center(40, "*"))
155     for line in f:
156         object = line.strip().split(",")
157         print("%s %s %s %s %s %s" % (object[0],object[1],object[2],object[3],object[4],object[5]))
158     print(msg)
159     column=[]
160     term=[]
161     symbol=[]
162     option=[]
163     choice = input("what do you want :")
164     if len(choice) == 0 or choice not in main_dic:continue
165     if choice == "5":break
166     if choice == "1":
167         select_sql = input("查询语句 :")
168         select_sql_list=select_sql.split(" ")
169         column = select_sql_list[1]
170         if len(select_sql_list) > 7:
171             term = select_sql_list[5]
172             symbol = select_sql_list[6]
173             option = select_sql_list[7]
174         main_dic["1"](column,term,symbol,option)
175     if choice == "2":
176         insert_sql = input("插入语句 :")
177         insert_sql_list = insert_sql.split(" ")
178         # insert into staff_table values ("terry",22,13333333,"it","2013-1-1")
179         column_str = insert_sql_list[4]
180         column_list = column_str.lstrip("(").rstrip(")").split(",")
181         name = column_list[0]
182         age = column_list[1]
183         phone = column_list[2]
184         dept = column_list[3]
185         enroll_date = column_list[4]
186         main_dic["2"](name,age,phone,dept,enroll_date)
				
时间: 2024-08-05 23:30:00

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

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

1. Redis 发布订阅 1.1 概述 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 . client5 和 client1 之间的关系: 当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端: 1.2 步骤: 1.2.1.  创建了订阅频

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

作为php新手 ,把经常用到的phpcode,做个备份 1: 文件处理 1 //读取配置 启动是指定文件 2 filepath=$argv[1]; 3 if(null==$filepath){ 4 echo"please point file\n"; 5 return; 6 } 7 //文件处理 8 $handle=fopen($filepath,'r'); 9 10 while(!feof($handle)){ 11 $line =fgets($handle); 12 if(null

QT学习笔记(16) QT5的数据库操作

一.编译驱动 参考博客:http://blog.csdn.net/xian0gang/article/details/49791351 因为从QT5以来,它就自带数据库驱动了,所以我们不需要费事的编译也可以使用数据库.QT访问MySQL需要两个动态链接库文件,一个是QT自己的mysql驱动插件,另一个是MySQL提供的动态链接库,缺一不可. 在程序里指定要访问的数据库是MySQL,QT会自动的加载MySQL驱动插件,其实实现依赖于MySQL的动态链接库访问MySQL. (1)访问MySQL提供的

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

Android内置了一个名为SQLite的关系型数据库,这是一款轻量型的数据库,操作十分简便.SQLite与别的数据库不同的是,它没有数据类型.可以保存任何类型的数据到你所想要保存的任何表的任何列中.但它又支持常见的类型比如: NULL, VARCHAR, TEXT, INTEGER, BLOB, CLOB...等. 唯一的例外是:integer primary key 此字段只能存储64位整数. 在JAVA项目中,要使用JDBC操作数据库需要加载数据库驱动,连接数据库等操作.Android简化

【discuzX2】/source/class/class_core.php文件中数据库操作类DB及db_mysql分析

<?php /** * Discuz MySQL 类的支持 程序中一般不直接使用此类,而是使用DB类,DB类对db_mysql类中的方法又进行了二次封装 * */ class db_mysql { var $tablepre; var $version = ''; var $querynum = 0; var $slaveid = 0; var $curlink; var $link = array(); var $config = array(); var $sqldebug = array(

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

列表,即写在方括号之间.用逗号分隔开的数值列表.列表内的项目不必全是相同的类型. >>> a = ['spam', 'eggs', 100, 1234] >>> a ['spam', 'eggs', 100, 1234] >>> squares = [1, 4, 9, 16, 25] >>> squares [1, 4, 9, 16, 25] 像字符串一样,列表可以被索引和切片: <pre> >>> sq

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

一.堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.c

相克军_Oracle体系_随堂笔记016-参数文件及数据库的启动和关闭

参数文件: spfile<SID>.ora    动态参数文件,是二进制文件,9i以后引入并建议使用 init<SID>.ora    静态参数文件,是文本文件 动态参数,部分参数可以动态修改.建议9i以后就使用spfile. 数据库启动三个阶段: nomount(根据参数文件配置参数启动实例) mount(根据参数文件中记录的控制文件位置打开控制文件) open(根据控制文件信息打开数据文件,redo日志文件,open数据库) 注:nomount之前就可以根据pfile创建spf

[terry笔记]11gR2_DataGuard搭建_拷贝数据文件

11gR2搭建dataguard环境: 自己做的实验,后续按照rman模式搭建.主备切换.模式调整等实验会陆续发上来. primary: OS:oel 6.4 database:11.2.0.4.0 192.168.100.131 hostname=node4 ORACLE_SID=good ORACLE_HOME=/u01/product/11.2.0 db_unique_name=good standby: OS:oel 6.4 database:11.2.0.4.0 192.168.100