MongoLab / PyMongo连接错误

如果我在外壳中运行:

mongo ds0219xx.mlab.com:219xx/dbname -u user -p pass

它可以正常工作,并允许我连接到数据库并提取信息。但是,如果我在python应用程序(Flask)中,并运行以下命令:

import pymongo

client = pymongo.MongoClient("mongodb://user:pass@ds0219xx.mlab.com:219xx/dbname")

db = client["dbname"]

db.users.insert_one({

"user1": "hello"

})

它给了我一个:

pymongo.errors.OperationFailure: Authentication failed.

我很确定它在进入insert_one()调用之前会失败,但是我不确定。

谢谢!

编辑:通过请求,这是完整的回调:

Traceback (most recent call last):

File "run.py", line 1, in <module>

from app import app

File "/Users/Derek/Documents/programming/shenalum/app/__init__.py", line 6, in <module>

from app import views

File "/Users/Derek/Documents/programming/shenalum/app/views.py", line 4, in <module>

from data import get_posts, get_user_info

File "/Users/Derek/Documents/programming/shenalum/app/data.py", line 9, in <module>

"user1": "hello"

File "/usr/local/lib/python2.7/site-packages/pymongo/collection.py", line 622, in insert_one

with self._socket_for_writes() as sock_info:

File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/contextlib.py", line 17, in __enter__

return self.gen.next()

File "/usr/local/lib/python2.7/site-packages/pymongo/mongo_client.py", line 718, in _get_socket

with server.get_socket(self.__all_credentials) as sock_info:

File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/contextlib.py", line 17, in __enter__

return self.gen.next()

File "/usr/local/lib/python2.7/site-packages/pymongo/server.py", line 152, in get_socket

with self.pool.get_socket(all_credentials, checkout) as sock_info:

File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/contextlib.py", line 17, in __enter__

return self.gen.next()

File "/usr/local/lib/python2.7/site-packages/pymongo/pool.py", line 541, in get_socket

sock_info.check_auth(all_credentials)

File "/usr/local/lib/python2.7/site-packages/pymongo/pool.py", line 306, in check_auth

auth.authenticate(credentials, self)

File "/usr/local/lib/python2.7/site-packages/pymongo/auth.py", line 436, in authenticate

auth_func(credentials, sock_info)

File "/usr/local/lib/python2.7/site-packages/pymongo/auth.py", line 416, in _authenticate_default

return _authenticate_scram_sha1(credentials, sock_info)

File "/usr/local/lib/python2.7/site-packages/pymongo/auth.py", line 188, in _authenticate_scram_sha1

res = sock_info.command(source, cmd)

File "/usr/local/lib/python2.7/site-packages/pymongo/pool.py", line 213, in command

read_concern)

File "/usr/local/lib/python2.7/site-packages/pymongo/network.py", line 99, in command

helpers._check_command_response(response_doc, None, allowable_errors)

File "/usr/local/lib/python2.7/site-packages/pymongo/helpers.py", line 196, in _check_command_response

raise OperationFailure(msg % errmsg, code, response)

pymongo.errors.OperationFailure:身份验证失败。

回答:

我想到了。你可以从python文件中执行此操作,它将起作用:

connection = pymongo.MongoClient(ab123456.mlab.com, 123456)

db = connection[databasename]

db.authenticate(database_user, database_pass)

以上是 MongoLab / PyMongo连接错误 的全部内容, 来源链接: utcz.com/qa/427569.html

回到顶部