首页

4.3项目开发过程

关灯 护眼    字体:

上一章 章节列表 下一章


4.3.1 生成初始数据


在项目的bin文件夹下有一个generate_data.py文件,文件中的代码如图4-14所示。

图4-14 generate_data.py文件中的代码

在本地启动 MongoDB,运行这个文件中的代码,则会在本地 MongoDB 中创建一个名为“chapter_4”的数据库,并在其中创建一个名为“people_info”的集合。初始状态会向集合中插入19条数据,如图4-15所示。

图4-15 初始数据

提示:

“初始数据生成程序生成”的人名、年龄和地址都是随机拼接的,因此每一位读者生成的初始数据都是不一样的。但可以确定的是,人名“小四”和“小六”中间没有“小五”。



4.3.2 实现“查询数据”功能


查询数据对应了DataBaseManager类里面的query_info()方法。在初始状态下,这个方法返回的是三条假数据,如图4-16所示。

图4-16 一开始query_info方法返回三条假数据

在图4-16中,方框框住的代码为:

现在的目标是,用 query_info()方法查询 MongoDB,并以列表的形式返回集合里面的所有数据。

由于无论是查询、增加、修改,还是删除数据,都会涉及数据库连接,因此,可以先在__init__()方法中创建数据库连接对象,这样在后面的其他方法中都能够直接使用,不需要多次初始化数据库连接。

1.创建数据库连接对象

修改__init__()方法中的代码,连接数据库并定位到people_info集合。见代码4-1。

代码4-1 构造函数

其中,主要代码说明如下。

● 第5行代码:创建MongoDB的连接。

● 第6行代码:指定使用“chapter_4”数据库。

● 第7行代码:指定使用“people_info”集合。

2.查询集合中所有“deleted”字段为0的信息

接下来完成query_info()方法,查询集合中所有“deleted”字段为0的信息。见代码4-2。

代码4-2 查询所有deleted为0的数据。

其中,主要代码说明如下。

● 第8行代码:“self.handler.find({'deleted': 0},{'_id': 0})”查询到所有deleted字段为0的数据,去掉ObjectId以后返回。再使用Python的list()方法把pymongo返回的对象转换为包含字典的列表。

● 第9行代码:将转换成的包含字典的列表返回。

完成以后的代码如图4-17所示。

图4-17 完善__init__()和query_info()方法

在虚拟环境中,使用“Ctrl+C”组合键关闭网站程序,然后再重新启动。刷新浏览器后可以看到,数据库中的信息已经成功显示在网页中了。

对比数据库中的数据可以发现,网页显示的内容与数据库中的内容是一致的,如图4-18所示。

图4-18 成功显示数据库中的数据



4.3.3 实现“添加数据”功能


添加数据的逻辑如下:

(1)如果people_info集合中没有数据,那么添加的人员工号为“1”。

(2)如果people_info中有数据,那么新的人员工号是“已有最大工号加1”。

(3)插入数据。

1.查询已有工号

首先需要查询people_info集合,寻找当前最大的工号。根据前面介绍的添加逻辑中的(1)和(2)两点,完善_query_last_id()方法,见代码4-3。

代码4-3 查询people_info寻找最大工号



其中,主要代码说明如下。

● 第10行代码:首先查询people_info集合,以“id”字段倒序排列,只取倒序排列以后的第1条数据,即id最大的那一条数据。

● 第11行代码:如果people_info不为空,那么if last_info判断语句会执行if左边的语句,并且变量last_info可以像列表一样读取下标为0的元素,再读取这个元素的id,这就是当前最大的id了,读取以后返回。如果people_info集合是空的,那么if last_info判断语句会执行else右边的语句,返回整数0。

2.添加新数据

add_info()方法首先调用_query_last_id()方法获得当前最大的id,然后把这个id加1作为新的id。再将新的id放到参数需要插入的字典“para_dict”中并插入数据库中。具体代码如下:

代码4-4 添加新数据

其中,主要代码说明如下。

● 第13、14行代码:获取当前最新id并加1。

● 第15行代码:把新的id添加到即将加入数据库的para_dict字典中。

● 第16~20行代码:把数据插入MongoDB中。为了防止在插入过程中出现问题,使用try…except Exception把插入的代码“包”起来,这样可以在插入数据出错时把报错信息打印出来。

代码如图4-19所示。

图4-19 添加新数据的相关代码

3.测试添加数据

添加好数据之后,重新启动网站。

(1)刷新网页以后,添加一条新的人员信息并单击“添加”按钮,如图4-20所示。

图4-20 添加新的人员信息

(2)可以发现新的人员信息已经被添加成功,如图4-21所示。

图4-21 新的人员信息添加成功


m.qiduwx.com提示您,本章没有阅读完,点击下一页进入下一页阅读!

上一章 章节列表 下一章