博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【学习笔记】mongodb的使用(二)flask项目使用mongodb实现人员管理系统
阅读量:3904 次
发布时间:2019-05-23

本文共 3245 字,大约阅读时间需要 10 分钟。

本教程目录:

在这里插入图片描述

pipenv install 安装依赖

(会报错,要修改此目录下的
在这里插入图片描述
werkzeug中的routing.py
在这里插入图片描述

再次进入虚拟环境:

pipenv shell

输入命令:

(chapter_4-jr12ODI9) D:\mongdb redis代码\SourceCodeofMongoRedis\chapter_4>set FLASK_APP=main.py

(chapter_4-jr12ODI9) D:\mongdb redis代码\SourceCodeofMongoRedis\chapter_4>flask run

在这里插入图片描述

执行python generate_data.py生成数据

D:\mongdb redis代码\SourceCodeofMongoRedis\chapter_4\bin>pip install pymongo
D:\mongdb redis代码\SourceCodeofMongoRedis\chapter_4\bin>python generate_data.py
在这里插入图片描述
查看图形界面:
在这里插入图片描述

修改DataBaseManager.py:

class DataBaseManager(object):    def __init__(self):        """        你需要在这里初始化MongoDB的连接,连上本地MongoDB,库名为chapter_4,集合名为people_info        """        client = MongoClient()        database = client.chapter_4 #指定使用chapter_4数据库        self.handler = database.people_info #指定使用people_info集合    def query_info(self):        """        你需要在这里实现这个方法,        查询集合people_info并返回所有"deleted"字段为0的数据。        注意返回的信息需要去掉_id        """        info_list = list(self.handler.find({
'deleted':0},{
'_id':0})) #查询到所有deleted字段为0的数据,去掉ObjectId以后返回,再用python的list方法把pymongo返回的对象转换为包含字典的列表 return info_list

中止后重新启动:

在这里插入图片描述
刷新页面:
在这里插入图片描述

增加数据:

def add_info(self, para_dict):        """        你需要实现这个方法,添加人员信息。        你可以假设para_dict已经是格式化好的数据了,        你直接把它插入MongoDB即可,不需要做有效性判断。        在实现这个方法时,你需要首先查询MongoDB,获取已有数据里面最新的ID是多少,        这个新增的人员的ID需要在已有的ID基础上加1.        :param para_dict: 格式为{'name': 'xxx', 'age': 12, 'birthday': '2000-01-01', 'origin_home': 'xxx', 'current_home': 'yyy', 'deleted': 0}        :return: True或者False        """        last_id = self._query_last_id()        this_id = last_id+1        para_dict['id'] = this_id        try:            self.handler.insert_one(para_dict)        except Exception as e:            print('插入数据失败,保存信息如下:{}'.format(e))            return False# add_info()方法首先调用_query_last_id()方法获得当前最大的id,然# 后把这个id加1作为新的id。再将新的id放到参数需要插入的字# 典“para_dict”中并插入数据库中。        return True

查询数据:

def _query_last_id(self):        """        你需要实现这个方法,查询当前已有数据里面最新的id是多少        返回一个数字,如果集合里面至少有一条数据,那么就返回最新数据的id,        如果集合里面没有数据,那么就返回0        提示:id不重复,每次加1        :return: 最新ID        """        last_info = self.handler.find({
},{
'_id':0,'id':1}).sort('id',-1).limit(1) #首先查询people_info集合,以“id”字段倒序排列,#只取倒序排列以后的第1条数据,即id最大的那一条数据 return last_info[0]['id'] if last_info else 0

修改数据:

def update_info(self, people_id, para_dict):        """        你需要实现这个方法。这个方法用来更新人员信息。        更新信息是根据people_id来查找的,因此people_id是必需的。        :param people_id: 人员id,数字        :param para_dict: 格式为{'name': 'xxx', 'age': 12, 'birthday': '2000-01-01', 'origin_home': 'xxx', 'current_home': 'yyy'}        :return: True或者False        """        try:            y = self.handler.update_one({
'id':people_id},{
'$set':para_dict}) print(y) except Exception as e: print('更新数据失败') return False return True

在这里插入图片描述

点击编辑,修改数据,能够成功更新了。
在这里插入图片描述

删除数据:

def del_info(self, people_id):        """        你需要实现这个方法。请注意,此处需要使用"假删除",        把删除操作写为更新"deleted"字段的值为1        :param people_id: 人员id        :return: True或者False        """        return self.update_info(people_id,{
'deleted':1})

为了防止数据的误删除,使用“假删除”是一个简单有效的方法。在查询数据时,用到的查询条件为“deleted字段为0”,那么只要把deleted字段改为非0就可以让数据查不出来,也就变相实现了删除的功能。因此,删除数据的本质仍然是更新数据

本教程代码学习自书籍《左手Mongodb 右手Redis》

转载地址:http://qtten.baihongyu.com/

你可能感兴趣的文章
js字符串时间相减得出相减的天数
查看>>
JS怎么将日期的值转换为字符串格式,分别获取年份、月份和日期
查看>>
js中对小数取整
查看>>
规范 CSS 的命名和书写
查看>>
js之foreach用法
查看>>
js中forEach,for in,for of循环的用法
查看>>
使用eclipse打jar包(可执行的jar)
查看>>
OneNote 安装代码高亮插件 NoteHightlight的安装及使用基础教程
查看>>
sql利用dual空表查询两日期之间所有日期
查看>>
JS之去除数组中的数据(0, 空,undefined, null, false)
查看>>
项目部署服务器流程
查看>>
Spring Boot 工程pom.xml 文件第一行红叉报错解决办法
查看>>
js中slice和splice的区别
查看>>
Eclipse 注释模板 可导入xml或者按需更改
查看>>
Iterator主要有三个方法:hasNext()、next()、remove()详解
查看>>
Java中Map的 entrySet()、keySet() 详解以及用法
查看>>
浏览器常用兼容性调试技巧
查看>>
浅谈webpack
查看>>
改变echarts的柱状图内边距(其他图也适用)
查看>>
使用webpack打包TS
查看>>