Reputation: 147
I'm calling db dev
to insert data into its collection. But it's creating a new collection and inserting data into 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)
Am I missing something here?
PS: I tried replacing admin
with dev
. It gave pymongo.errors.OperationFailure: Authentication failed.
I guess thats because the authentication data is in admin
db.
app.config['MONGO_URI'] = 'mongodb://<user>:<password>@<url>:27017'
This, also, didn't work.
Upvotes: 0
Views: 6641
Reputation: 147
Replacing admin
with dev
in MONGO_URI causes Authentication Error
.
Adding authSource
will authenticate with admin
db.
To do this, replace admin
with 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)
Upvotes: 2