Can';t通过flask_pymongo连接到MongoDB

Can';t通过flask_pymongo连接到MongoDB,flask,flask-pymongo,Flask,Flask Pymongo,我只是在玩Flask和MongoDB时遇到了一个问题。下面是一些场景 启用授权后 如果我用mongo=PyMongo(app)模式使用PyMongo()fromflask\u PyMongo,我只会得到授权错误。虽然我能够通过MonogoClient()从pymongo使用相同的连接字符串成功检索数据库 未授权启用 如果使用flask\u pymongo,则不会出现错误。但我也没有得到任何数据。例如,mongo.db.collection\u names()只返回空数组。使用MongoClien

我只是在玩
Flask
MongoDB
时遇到了一个问题。下面是一些场景

启用授权后

如果我用
mongo=PyMongo(app)
模式使用
PyMongo()
from
flask\u PyMongo
,我只会得到
授权错误。虽然我能够通过
MonogoClient()
pymongo
使用相同的连接字符串成功检索数据库

未授权启用

如果使用
flask\u pymongo
,则不会出现错误。但我也没有得到任何数据。例如,
mongo.db.collection\u names()
只返回空数组。使用
MongoClient()
,相同的操作成功

我正在使用:

  • python=3.6.3
  • 烧瓶=0.12.2
  • 烧瓶_pymongo=0.5.1
  • pymongo=3.5.1

提前感谢

您是否看到了解释如何使用MongoDB创建简单RESTful api的内容。

我已经将Flask与Flask PyMongo一起使用了一段时间,下面是我如何与MongoDB建立连接的

from flask import Flask
from flask_cors import CORS
from flask_pymongo import PyMongo

app = Flask(__name__)
CORS(app) # very important!

USERNAME = '<username>'
PASSWORD = '<password>'
PORT = '27017'
HOST = 'localhost'

app.config['MONGO_DBNAME'] = '<DB Name>'
app.config['MONGO_HOST'] = HOST
app.config['MONGO_PORT'] = PORT
app.config['MONGO_USERNAME'] = USERNAME
app.config['MONGO_PASSWORD'] = PASSWORD
mongo = PyMongo(app)
我还应该注意到,通过Flask PyMongo连接授权时遇到问题,因为数据库需要以某种方式配置授权。Flask PyMongo希望db权限位于数据库本身,而不是其他地方。因此,在为db创建用户和密码时,请在mongo shell中执行以下操作:

创建用户管理员

use admin
db.createUser({user: "userAdmin", pwd: "", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
在数据库上创建用户

use <YOUR db>
db.createUser({user: "", pwd: "", roles:[{ role: "dbAdmin", db: ""}, {role: "readWrite", db: ""}]})
使用
createUser({user:,pwd:,roles:[{role:“dbAdmin”,db:},{role:“readWrite”,db:“}]})
在mongo中,甚至使用PyMongo,您可以在一个数据库中创建用户,并授予他们访问其他数据库的权限,但无论出于何种原因,Flask PyMongo在这里都不起作用,您需要在想要使用的数据库中创建用户


希望这对我有帮助,因为我在这里也很挣扎。请随时要求澄清

这是MongoDB与烧瓶的简单示例这是MongoDB与烧瓶的简单示例
use <YOUR db>
db.createUser({user: "", pwd: "", roles:[{ role: "dbAdmin", db: ""}, {role: "readWrite", db: ""}]})