flask结合mongo使用

20 篇文章 0 订阅
2 篇文章 0 订阅

简介

本文是flask中对mongo的操作. 使用Flask-MongoEngine集成了mongo的操作,使用的是类似于django中的orm操作。

相关链接

Flask-MongoEngine文档
MongoEngine文档
生活助手项目案例

使用

mongo的配置. flask将这个配置加载进来即可.

MONGODB_SETTINGS = {
    "db": "lifeAssistant",
    "host": "192.168.0.206",
    "port": 27017
}

创建mongo引擎.

from flask_mongoengine import MongoEngine
mongodb = MongoEngine()

创建Document,类似于django的model.

from lifeAssistant.extension import mongodb

class Article(mongodb.Document):
    category = mongodb.StringField()
    category2 = mongodb.StringField()
    title = mongodb.StringField()
    content = mongodb.StringField()
    publisher = mongodb.StringField()
    publisher_time = mongodb.StringField()
    create_time = mongodb.StringField()

使用Document进行操作. 其他操作请看官方文档


# 通过id获取数据.  
instance = Article.objects.get_or_404(id=id)

解決问题

mongo数据转json

问题: mongo转json时,会输出ObjectId这对象,而不是直接的id值,这个时候需要转换.


# 这个是将mongo Document对象转换成json的编码器
class MongoEncoder(JSONEncoder):
    def default(self, o):

        # 转换日期
        if isinstance(o, (datetime, date)):
            pass

        # 转换Document
        if isinstance(o, BaseDocument):
            return o.to_mongo()

        # 转换id
        if isinstance(o, ObjectId):
            return str(o)

        return JSONEncoder.default(self, o)



# 在蓝图上添加mongo解码器.  jsonify会自动将Document对象转成json
bp = Blueprint("article", __name__, url_prefix="/article")
bp.json_encoder = MongoEncoder


@bp.route("/<id>/", methods=("GET",))
def article(id: str):
    instance = Article.objects.get_or_404(id=id)

    return jsonify({
        "code": 0,
        "msg": "success",
        "data": instance
    })        

欢迎关注,互相学习,共同进步~

我的个人博客

我的微信公众号:编程黑洞

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值