烧瓶Pymongo插入

时间:2017-08-10 09:07:27

标签: python mongodb flask flask-pymongo

我正在调用db dev将数据插入其集合中。但它正在创建一个新的集合并将数据插入admin db。

from app import app
from flask import Flask
from flask import jsonify
from flask import request
from flask_pymongo import PyMongo

@app.route('/')
@app.route('/index')
def index():
    return "Hello, World!"

app.config['MONGO_DBNAME'] = 'dev'
app.config['MONGO_AUTH_SOURCE'] = 'admin'
app.config['MONGO_URI'] = 'mongodb://<user>:<password>@<url>:27017/admin'

mongo = PyMongo(app)

@app.route('/mongo', methods=['GET'])
def get_all_docs():
  doc = mongo.db.abcd.insert({'abcd':'abcd'})
  return "Inserted"

if __name__ == '__main__':
    app.run(debug=True)

我在这里错过了什么吗?

PS:我尝试用admin替换dev。它给了pymongo.errors.OperationFailure: Authentication failed.我猜那是因为身份验证数据在admin db。

app.config['MONGO_URI'] = 'mongodb://<user>:<password>@<url>:27017'   这也没有用。

1 个答案:

答案 0 :(得分:2)

在MONGO_URI中使用admin替换dev会导致Authentication Error
添加authSource将使用admin db进行身份验证 为此,请将admin替换为dev?authSource=admin

from app import app
from flask import Flask
from flask import jsonify
from flask import request
from flask_pymongo import PyMongo

@app.route('/')
@app.route('/index')
def index():
    return "Hello, World!"

app.config['MONGO_URI'] = 'mongodb://<user>:<password>@<url>:27017/dev?authSource=admin'

mongo = PyMongo(app)

@app.route('/mongo', methods=['GET'])
def get_all_docs():
  doc = mongo.db.abcd.insert({'abcd':'abcd'})
  return "Inserted"

if __name__ == '__main__':
    app.run(debug=True)