当前位置: 首页 > 工具软件 > Mongodb-ORM > 使用案例 >

Flask-ORM方式操作Mongodb

马祺
2023-12-01

前言

在实际项目中,我们有时需要存储一些json类型的字符串,这种类型的数据写入到关系型数据库,会比较麻烦。一般我们将其写入到非关系型数据库中,例如MongoDB,同样我们也可以用操作关系型数据库的ORM方式操作MongoDB。

1: 配置文件的(settings.py)

MONGODB_SETTINGS = [{'db': 'api_params', 'host': MONGO_DB, 'port': 27017, "connect": True,
                         'username': 'root',
                         'password': 'root',
                         'authentication_source': 'admin'},
                        # 数据校验结果存放在check_data库中
                        {'db': 'check_data', 'host': MONGO_DB, 'port': 27017, "connect": True,
                         'username': 'root',
                         'password': 'root',
                         'authentication_source': 'admin', "alias": "task_alias"}]

我们可以通过起别名的方式添加多个mongodb的集合。
2: 初始化(factory.py)

from flask_mongoengine import MongoEngine
mongodb = MongoEngine()
mongodb.init_app(app)

3: model层(model.py)

from app.main.extensions import mongodb
import datetime

class CaseData(mongodb.Document):
    # model层
    _id = mongodb.StringField(required=True, max_length=200)
    app_data = mongodb.StringField(required=True)
    rec_data = mongodb.StringField(required=True)
    current_time = mongodb.DateTimeField(default=datetime.datetime.now(), required=False)
    meta = {"db_alias": "task_alias_case"}

    def to_json(self):
        return {"batch_id": self._id,
                "app_data": self.app_data,
                "rec_data": self.rec_data,
                "current_time": self.current_time
                }

4: 对mongodb数据库的操作

mongodb_object = CaseData.objects(_id=1).first()   # 查询mongodb数据对象
cache_data = {"_id":1, "app_data": 123, "rec_data": 1234}
CaseData(**cache_data).save()   # 存储数据
mongodb_object.update(app_data ="要修改的数据")   # 修改数据

官方文档: https://pypi.org/project/flask-mongoengine/

 类似资料: