首页 > 解决方案 > flask-pymongo:我把 mongo 放在一个单独的 python 文件中,它变成了 NoneType

问题描述

我有三个文件: params.py 像这样:

from flask_pymongo import PyMongo
mongo = PyMongo()

server.py 像这样:

from params import mongo
mongo.init_app(app)

一个关于views.py中蓝图中的帖子的函数,如下所示:

from params import mongo
...
mongo.db.courses_cache.find_one_and_update({'uid': 100}, {'$set': {'data': {}, 'hash': '123'}}, upsert=True)

它有这样的错误:

mongo.db.courses_cache.find_one_and_update({'uid': 100}, {'$set': {'data': {}, 'hash': '123'}}, upsert=True) AttributeError: 'NoneType' 对象没有属性“courses_cache”

但是如果我在“mongo.init_app(app)”之后写这个mongo op,就可以了。

mongo.db 在其他 python 文件中只是变成“无”。

我一直以这种方式使用flask-sqlalchemy,零错误,为什么flask-pymongo不能?

标签: pythonflaskpymongo-3.xflask-pymongo

解决方案


在调用 after 之前,您不能使用该PyMongo实例init_app——我的猜测是在您的 views.py 中,您尚未导入 server.py 或以其他方式确保init_app已调用该实例。


推荐阅读