日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

【学习笔记】mongodb的使用(二)flask项目使用mongodb实现人员管理系统

發(fā)布時(shí)間:2024/9/30 windows 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【学习笔记】mongodb的使用(二)flask项目使用mongodb实现人员管理系统 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本教程目錄:

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。