2024-09-03

MongoDB作为一种流行的NoSQL数据库,被广泛应用于各种项目中。Python的mongoengine库是一个对象文档映射(ODM)工具,旨在简化与MongoDB的交互。它提供了类似ORM(对象关系映射)的功能,使开发者能够以面向对象的方式操作MongoDB中的文档。本文将详细介绍mongoengine库,包括其安装方法、主要特性、基本和高级功能,以及实际应用场景,帮助全面了解并掌握该库的使用。





1. 以管理员身份运行命令行窗口,使用该命令将MongDB服务删除掉

sc delete MongoDB
2. 删除以后我们自己在data目录下创建一个db文件夹;log目录下创建一个MongoDB.log文件,如下:
3. 重新装一个MongoDB服务就可以了,在安装目录的bin中打开控制台窗口输入命令:
mongod --dbpath=F:\mongodb\data\db  --logpath=F:\mongodb\log\MongoDB.log --install --serviceName "MongoDB"
4. 再输入 net start MongoDB启动服务




C:\Program Files\MongoDB\Server\7.0\data\


MongoDB安装过程中出现service MongoDB failed to start,verify that you have sufficient privileges to start...

打开(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)