我已经将 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 出于某种原因在这里并不好用,您需要在要使用的数据库中创建用户。
希望这会有所帮助,因为我也在这里挣扎。随时要求澄清