MongoDB作为一种流行的NoSQL数据库,被广泛应用于各种项目中。Python的mongoengine库是一个对象文档映射(ODM)工具,旨在简化与MongoDB的交互。它提供了类似ORM(对象关系映射)的功能,使开发者能够以面向对象的方式操作MongoDB中的文档。本文将详细介绍mongoengine库,包括其安装方法、主要特性、基本和高级功能,以及实际应用场景,帮助全面了解并掌握该库的使用。
1. 以管理员身份运行命令行窗口,使用该命令将MongDB服务删除掉
sc delete MongoDB打开(services.msc)服务界面,找到MongoDB Server,右键->属性->登录,登录身份选择本地系统账户(L)。
from flask import Flask from flask_mongoengine import MongoEngine from mongoengine import QuerySet, Q app = Flask(__name__) # app.config.from_object(config) # 载入config.py中的配置信息 app.config["MONGODB_SETTINGS"] = { 'db': 'data', # 'host': '10.108.45.90', 'host': 'localhost', 'port': 27017, } # 注册实例 db = MongoEngine() # 使用dict()函数创建空字典 class TestMasterModelQuerySet(QuerySet): @property def testpermission_description(self): """ 权限描述 (可以获取权限的属性名) :return: """ desc_dict = dict() desc_dict["permission_edit_user_permission"] = { "label": "修改用户权限", "order": 0 } desc_dict["permission_edit_user_info"] = { "label": "修改用户信息", "order": 1 } desc_dict["permission_edit_process"] = { "label": "修改工艺图", "order": 2 } desc_dict["permission_edit_alarm_threshold"] = { "label": "编辑实时标签点", "order": 3 } desc_dict["permission_edit_deal_alarm"] = { "label": "管理报警", "order": 4 } return desc_dict def testget_user(self, username): """查询用户 如果不存在返回None""" try: qs = self.get(username=username) return qs except Exception as e: return None def testset_user_permission(self, username, permissions): try: user = self.testget_user(username) permission = self.testpermission_description for k, v in permission.items(): setattr(user, k, True if k in permissions else False) user.save() return True except Exception as e: return False # 用户管理 class TestMasterModel(db.Document): """人员表""" meta = { 'queryset_class': TestMasterModelQuerySet, "collection": "master_model" } username = db.StringField(null=False, unique=False, ) # 用户名 password = db.StringField(null=False, unique=False, max_length=18, min_length=4) # 密码 phone = db.StringField(null=True, max_length=11) # 电话 email = db.StringField(null=True) # 邮箱 department = db.StringField(null=True, unique=False, ) # 部门 # 权限 permission_edit_user_permission = db.BooleanField(default=False) # 编辑用户权限 permission_edit_user_info = db.BooleanField(default=False) # 编辑用户信息 permission_edit_process = db.BooleanField(default=False) # 编辑工艺图 permission_edit_alarm_threshold = db.BooleanField(default=False) # 编辑报警阈值 permission_edit_deal_alarm = db.BooleanField(default=False) # 处理报警 # 链接数据库 db.init_app(app) # 如果你想创建一个用户实例 # new_user = TestMasterModel(username='root', password='123456',phone='13592986386',email='AAA@qq.com',department='development', # permission_edit_user_permission=True,permission_edit_user_info=True,permission_edit_process=True, # permission_edit_alarm_threshold=True,permission_edit_deal_alarm=True, # ) # new_user.save() # 保存用户到数据库 @app.route('/') def index(): # 实例化Model aaaa= TestMasterModel.objects.testget_user("root") print(aaaa) print(aaaa.password) return 'mongodb demo test finish' if __name__ == "__main__": app.run(debug=True)