【学习笔记】mongodb的使用(二)flask项目使用mongodb实现人员管理系统
本教程目錄:
pipenv install 安裝依賴
(會(huì)報(bào)錯(cuò),要修改此目錄下的
werkzeug中的routing.py
再次進(jìn)入虛擬環(huán)境:
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
執(zhí)行python generate_data.py生成數(shù)據(jù)
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數(shù)據(jù)庫self.handler = database.people_info #指定使用people_info集合def query_info(self):"""你需要在這里實(shí)現(xiàn)這個(gè)方法,查詢集合people_info并返回所有"deleted"字段為0的數(shù)據(jù)。注意返回的信息需要去掉_id"""info_list = list(self.handler.find({'deleted':0},{'_id':0}))#查詢到所有deleted字段為0的數(shù)據(jù),去掉ObjectId以后返回,再用python的list方法把pymongo返回的對(duì)象轉(zhuǎn)換為包含字典的列表return info_list中止后重新啟動(dòng):
刷新頁面:
增加數(shù)據(jù):
def add_info(self, para_dict):"""你需要實(shí)現(xiàn)這個(gè)方法,添加人員信息。你可以假設(shè)para_dict已經(jīng)是格式化好的數(shù)據(jù)了,你直接把它插入MongoDB即可,不需要做有效性判斷。在實(shí)現(xiàn)這個(gè)方法時(shí),你需要首先查詢MongoDB,獲取已有數(shù)據(jù)里面最新的ID是多少,這個(gè)新增的人員的ID需要在已有的ID基礎(chǔ)上加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+1para_dict['id'] = this_idtry:self.handler.insert_one(para_dict)except Exception as e:print('插入數(shù)據(jù)失敗,保存信息如下:{}'.format(e))return False # add_info()方法首先調(diào)用_query_last_id()方法獲得當(dāng)前最大的id,然 # 后把這個(gè)id加1作為新的id。再將新的id放到參數(shù)需要插入的字 # 典“para_dict”中并插入數(shù)據(jù)庫中。return True查詢數(shù)據(jù):
def _query_last_id(self):"""你需要實(shí)現(xiàn)這個(gè)方法,查詢當(dāng)前已有數(shù)據(jù)里面最新的id是多少返回一個(gè)數(shù)字,如果集合里面至少有一條數(shù)據(jù),那么就返回最新數(shù)據(jù)的id,如果集合里面沒有數(shù)據(jù),那么就返回0提示:id不重復(fù),每次加1:return: 最新ID"""last_info = self.handler.find({},{'_id':0,'id':1}).sort('id',-1).limit(1) #首先查詢people_info集合,以“id”字段倒序排列, #只取倒序排列以后的第1條數(shù)據(jù),即id最大的那一條數(shù)據(jù)return last_info[0]['id'] if last_info else 0修改數(shù)據(jù):
def update_info(self, people_id, para_dict):"""你需要實(shí)現(xiàn)這個(gè)方法。這個(gè)方法用來更新人員信息。更新信息是根據(jù)people_id來查找的,因此people_id是必需的。:param people_id: 人員id,數(shù)字: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('更新數(shù)據(jù)失敗')return Falsereturn True
點(diǎn)擊編輯,修改數(shù)據(jù),能夠成功更新了。
刪除數(shù)據(jù):
def del_info(self, people_id):"""你需要實(shí)現(xiàn)這個(gè)方法。請(qǐng)注意,此處需要使用"假刪除",把刪除操作寫為更新"deleted"字段的值為1:param people_id: 人員id:return: True或者False"""return self.update_info(people_id,{'deleted':1})為了防止數(shù)據(jù)的誤刪除,使用“假刪除”是一個(gè)簡單有效的方法。在查詢數(shù)據(jù)時(shí),用到的查詢條件為“deleted字段為0”,那么只要把deleted字段改為非0就可以讓數(shù)據(jù)查不出來,也就變相實(shí)現(xiàn)了刪除的功能。因此,刪除數(shù)據(jù)的本質(zhì)仍然是更新數(shù)據(jù)
本教程代碼學(xué)習(xí)自書籍《左手Mongodb 右手Redis》
總結(jié)
以上是生活随笔為你收集整理的【学习笔记】mongodb的使用(二)flask项目使用mongodb实现人员管理系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【学习笔记】在windows下进行基于T
- 下一篇: 【flask整合深度学习】ubuntu系