我在玩Flask
和MongoDB
时遇到了问题。这是场景
启用授权
如果我使用PyMongo()
来自flask_pymongo
的{{1}}模式,我只会获得mongo = PyMongo(app)
。虽然我能够使用相同的连接字符串从Authorization Errors
通过MonogoClient()
成功检索数据库。
未启用授权
如果我使用pymongo
,则没有错误。但我也没有得到任何数据。例如,flask_pymongo
只返回空数组。使用mongo.db.collection_names()
,相同的操作成功。
我正在使用:
先谢谢
答案 0 :(得分:0)
您是否看到this tutorial解释了如何使用MongoDB制作简单的RESTful API。
答案 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希望数据库权限位于数据库本身而不是其他位置。因此,在为数据库创建用户名和密码时,请在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出于某种原因在这里不能很好地发挥作用,因此您需要在想要在数据库中创建的用户使用。
希望这也会有所帮助,因为我在这里也很努力。随时要求澄清