【发布时间】:2024-04-24 22:10:02
【问题描述】:
我正在调用 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:我尝试用dev 替换admin。它给了pymongo.errors.OperationFailure: Authentication failed. 我猜那是因为身份验证数据在admin db 中。
app.config['MONGO_URI'] = 'mongodb://<user>:<password>@<url>:27017'
这也不起作用。
【问题讨论】:
-
为什么不简单地
'mongodb://<user>:<password>@<url>:27017/dev'?如果您正在阅读告诉您将 AUTH_SOURCE 或“admin”设置为数据库的帖子,那么这些来源确实已经过时了。驱动程序在“默认”下查看"admin"以获得授权,并且您应该只需要有意使用不同命名空间的其他选项。由于您使用的是默认设置,因此不需要其他设置。 -
@NeilLunn
pymongo.errors.OperationFailure: Authentication failed.当我使用 dev 代替 admin 时。我在上面提到过。 -
连接实际使用的是什么?用 mongoengine 标记的问题。您实际上是在使用它还是在您自己的代码中调用原始 pymongo 驱动程序,但此处未显示?因为任何一个AFAIK都没有使用
PyMongo(app)调用。最重要的是您确定该帐户实际上可以访问dev数据库吗?您是否真的尝试过使用来自其他来源的帐户连接和使用集合? -
@NeilLunn 我打电话给 pymongo 驱动程序。是的,我可以访问开发数据库。我还有其他几个连接正常。
-
嗯
PyMongo不是 pymongo 驱动程序的导出。您“应该”使用MongoClient进行连接。这使我认为问题中没有显示您自己的代码是问题的实际根源。请实际显示应用连接详细信息的代码。
标签: python mongodb flask flask-pymongo