Flask-ORM方式操作Mongodb

前言

在实际项目中,我们有时需要存储一些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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Enougme

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值