本文共 1513 字,大约阅读时间需要 5 分钟。
本文是flask中对mongo的操作. 使用Flask-MongoEngine
集成了mongo的操作,使用的是类似于django中的orm操作。
mongo的配置. flask将这个配置加载进来即可.
MONGODB_SETTINGS = { "db": "lifeAssistant", "host": "192.168.0.206", "port": 27017}
创建mongo引擎.
from flask_mongoengine import MongoEnginemongodb = MongoEngine()
创建Document,类似于django的model.
from lifeAssistant.extension import mongodbclass 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时,会输出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对象转成jsonbp = Blueprint("article", __name__, url_prefix="/article")bp.json_encoder = MongoEncoder@bp.route("//", methods=("GET",))def article(id: str): instance = Article.objects.get_or_404(id=id) return jsonify({ "code": 0, "msg": "success", "data": instance })
转载地址:http://bakjn.baihongyu.com/