0

我只是在玩Flaskand时遇到了问题MongoDB。以下是场景

启用授权

如果我使用带有模式PyMongo()的 from ,我只会得到. 虽然我能够通过使用相同的连接字符串成功检索数据库。flask_pymongomongo = PyMongo(app)Authorization ErrorsMonogoClient()pymongo

未启用授权

如果我使用flask_pymongo,则没有错误。但我也没有得到任何数据。例如,mongo.db.collection_names()只返回空数组。,MongoClient()同样的操作成功了。

我在用:

  • 蟒蛇= 3.6.3
  • 烧瓶 = 0.12.2
  • 烧瓶pymongo = 0.5.1
  • pymongo = 3.5.1

提前致谢

4

1 回答 1

0

我已经将 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)

CORS(app)根据您的设置,您可能不需要。

要创建多个连接,请执行以下操作:

# Users db
app.config['MONGO2_DBNAME'] = 'users'
app.config['MONGO2_HOST'] = HOST
app.config['MONGO2_PORT'] = PORT
app.config['MONGO2_USERNAME'] = USERNAME
app.config['MONGO2_PASSWORD'] = PASSWORD
users_mongo = PyMongo(app, config_prefix='MONGO2')

我还应该注意,我在通过 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: ""}]})

在 mongo 甚至 PyMongo 中,您可以在一个数据库中创建用户并授予他们访问其他数据库的权限,但是 Flask-PyMongo 出于某种原因在这里并不好用,您需要在要使用的数据库中创建用户。

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

于 2018-06-27T14:17:22.947 回答