一、概述
python,进来非常火爆的一门编程语言,在尝试了一些编程语言之后,在熟悉了一系列python基础之后,决定以其为主要工具开展工作,于是拿起《python 编程》,跟我一起走进python的编程世界吧
首先一起构建一个保存和记录信息的数据库,通过一步步编程实现:交互式编程、命令行工具,控制台界面,GUI和简单的网页界面。一路下来熟悉数据表示、对象持久化和面向对象编程等相关概念。
二、任务概述
由于工作需求,要求记录员工的信息,通过程序来管理这些员工信息
1、表示记录
python中表示数据的方式很多,一般会使用列表和字典
1)列表
xxho=["小小海鸥",26,8000,"IT"]
yhm=["张家辉",44,9000,"hardware"]
以上就创建了两条记录,每条记录包含了四个属性的列表【姓名、年龄、工资、职业】,通过列表的索引访问这些属性,对这些属性可以进行后续的操作
xxho=["小小海鸥",26,8000,"it"] yw=["叶问",44,92000,"咏春"] #获通过碎银取对应的属性 print(xxho)
print(yhm) print(xxho[1]) #获取xxho对象的年龄属性,并在控制台输出 print(yw[0]) #获取yhm对象的name属性,并在控制台输出
2)数据库列表
目前为止仅仅是创建了两个列表变量,不是数据库,因此创建一个新列表person来存储这两个变量,这个新的person列表就是数据库,通过对这个新列表进行相应的操作实现对数据的增删改查
1 xxho=["小小海鸥",26,8000,"it"] 2 yw=["叶问",44,92000,"咏春"] 3 4 #获通过碎银取对应的属性 5 6 print(xxho[1]) #获取xxho对象的年龄属性,并在控制台输出 7 print(yhm[0]) #获取yhm对象的name属性,并在控制台输出 8 9 #创建一个新的person列表 10 person=[xxho,yhm] 11 12 #通过对应的相对位置来获取值 13 print(person[0][0]) #获取xxho的name属性 14 15 #通过for循环来处理每一条记录 16 17 for person in people: 18 print(person[0]) #获取每个对象的名字 19 person[2]*=1.20 #每个人的工资涨幅20%
以上我们就可以保存和修改相应的人员信息,实现了信息的管理,但是列表中的人员信息只能暂时存储的对象,当pytho程序运行结束后就消失了,每次想要修改对应的属性时,必须重复写入修改的代码,所以还有很大的改善和优化空间。
而且我们访问对象对应的属性是通过对应的列表索引,所以每次都要确认下索引和属性的对应关系。
(3)针对列表存在的这些缺点,python字典可以完美解决以上问题
通过字典存储人员的信息和查看对应的属性
1 #创建字典对象 2 xxho={"name":"小小海鸥","age":26,"pay":8000,"job":"IT"} 3 zjh={"name":"张家辉","age":44,"pay":82000,"job":"actor"} 4 5 #获得字典对应的值 通过key访问value 6 print(zjh["name"]) 7 print(zjh["age"]) 8 print(zjh["pay"])
创建字典几种方法
1 #1、直接通过键值对和{}创建 2 xxho={"name":"小小海鸥","age":26,"job":"IT"} 3 4 #通过key访问value 5 print(xxho["name"]) 6 print(xxho["age"]) 7 print(xxho["job"]) 8 9 #2、通过dict关键字创建 10 yw=dict(name="叶问”,age=24,pay=3200,job="咏春") 11 print(yw) 12 13 #3、创建空字典,一个个添加对应的属性 14 15 lxl={} 16 lxl["name"]="李小龙" 17 lxl["age"]=80 18 lxl["pay"]=12000 19 20 print(lxl)
(4)字典的字典
以上创建的字典仅仅是两个字典对象,同样创建一个字典列表,存储这两个字典对象构建数据库
1 #创建字典对象 2 xxho={"name":"小小海鸥","age":26,"pay":8000,"job":"IT"} 3 yw={"name":"叶问","age":44,"pay":82000,"job":"咏春"} 4 5 db={} 6 7 db["xxho"]=xxho 8 db["yw"]=yw 9 10 #获取yw的名字 11 print(db["yw"]["name"])
2、持久存储记录
以上应用字典的方法存储表示记录数据库,为使得人员信息持久化,需要将人员信息保存在某种类型的文件当中
1)创建一个initdata.py文件
1 #记录信息 2 bob={"name":"bob smith","age":36,"pay":3000,"job":"dev"} 3 xxho={"name":"小小海鸥","age":26,"pay":8000,"job":"IT"} 4 yw={"name":"叶问","age":36,"pay":3000,"job":"咏春"} 5 6 7 #创建数据库 8 db={} 9 db["bob"]=bob 10 db["xxho"]=xxho 11 db["yw"]=yw 12 13 if __name__=="__main__": 14 for key in db: 15 print(key,"==>",db[key])
2)格式化数据脚本
将存储在内存中的数据,写入到文件当中,以便于永久保存
创建一个make_db_file.py文件
1 """ 2 将内存数据库对象保存到文件当中,假定不使用“endrec.”,“enddb.”和“==>” 3 """ 4 5 dbfilename="people_file" 6 ENDDB="enddb." 7 ENDREC="endrec." 8 RECSEP="=>" 9 10 def storDbase(db,dbfilename=dbfilename): 11 """ 12 将数据库保存到文件当中 13 :param db:要保存的db字典 14 :param dbfilename:保存的文件 15 :return: 16 """ 17 with open(dbfilename,mode="w",encoding="utf-8") as f: 18 for key in db: 19 f.write(key+"\n") 20 for key,value in db[key].items(): 21 f.write(key+RECSEP+repr(value)+"\n") 22 f.write(ENDREC+"\n") 23 f.write(ENDDB) 24 25 def loadDbase(dbfilename): 26 db={} #保存字典 27 rec = {} #存储每个人都的信息 28 with open(dbfilename,mode="r",encoding="utf-8") as f: 29 for key in f: 30 key=key.strip() 31 if key ==ENDDB: 32 return db 33 elif key==ENDREC: 34 rec={} 35 continue 36 elif RECSEP in key: 37 k,value=key.split(RECSEP) 38 rec[k]=value 39 else: 40 db[key]=rec 41 42 43 44 45 46 if __name__=="__main__": 47 from initdata import db 48 storDbase(db) 49 print(loadDbase(dbfilename))
3)载入数据 创建dump_db_file.py文件
1 from make_db_file import loadDbase 2 3 db=loadDbase() # 通过loadDbase()方法将文件中的内容加载到字典 4 for key in db: 5 print(key,"==>",db[key]) 6 print(db["yw"]["name"])
4)更新数据 创建update_db_file.py
先从文件中加载数据,然后对字典进行修改,最后再写入到文件当中,完成文件数据的更新
1 from make_db_file import loadDbase,storDbase 2 db=loadDbase() #加载数据 3 db["yw"]["age"]=100 #修改数据 4 db["xxho"]["pay"]=10000 5 print(db) 6 storDbase(db) #再次保存数据