2017-08-17 28 views
0

私たちはpythonスクリプトで、mongodbに接続するpymongoを使ってコードを書いています。プログラムでpymongoを使用してmongodbに接続できません

username = 'abc' 
password = 'xxxxxx' 
server = 'dns name of that server' 
port = 27017 

、コードは次のようになります。

import pymongo 
from pymongo import MongoClient 
client = MongoClient(url, serverSelectionTimeoutMS=300) 
database = client.database_name 
data_insert = database.collection_name.insert_one({'id': 1, 'name': xyz}) 

私はこれらの操作を実行しようとしましたときに、それがエラーを発生させます:MongoDBので

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/pymongo/cursor.py", line 1114, in next 
    if len(self.__data) or self._refresh(): 
    File "/usr/local/lib/python2.7/dist-packages/pymongo/cursor.py", line 1036, in _refresh 
    self.__collation)) 
    File "/usr/local/lib/python2.7/dist-packages/pymongo/cursor.py", line 873, in __send_message 
    **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/pymongo/mongo_client.py", line 905, in _send_message_with_response 
    exhaust) 
    File "/usr/local/lib/python2.7/dist-packages/pymongo/mongo_client.py", line 916, in _reset_on_error 
    return func(*args, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/pymongo/server.py", line 99, in send_message_with_response 
    with self.get_socket(all_credentials, exhaust) as sock_info: 
    File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__ 
    return self.gen.next() 
    File "/usr/local/lib/python2.7/dist-packages/pymongo/server.py", line 168, in get_socket 
    with self.pool.get_socket(all_credentials, checkout) as sock_info: 
    File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__ 
    return self.gen.next() 
    File "/usr/local/lib/python2.7/dist-packages/pymongo/pool.py", line 792, in get_socket 
    sock_info.check_auth(all_credentials) 
    File "/usr/local/lib/python2.7/dist-packages/pymongo/pool.py", line 512, in check_auth 
    auth.authenticate(credentials, self) 
    File "/usr/local/lib/python2.7/dist-packages/pymongo/auth.py", line 470, in authenticate 
    auth_func(credentials, sock_info) 
    File "/usr/local/lib/python2.7/dist-packages/pymongo/auth.py", line 450, in _authenticate_default 
    return _authenticate_scram_sha1(credentials, sock_info) 
    File "/usr/local/lib/python2.7/dist-packages/pymongo/auth.py", line 201, in _authenticate_scram_sha1 
    res = sock_info.command(source, cmd) 
    File "/usr/local/lib/python2.7/dist-packages/pymongo/pool.py", line 419, in command 
    collation=collation) 
    File "/usr/local/lib/python2.7/dist-packages/pymongo/network.py", line 116, in command 
    parse_write_concern_error=parse_write_concern_error) 
    File "/usr/local/lib/python2.7/dist-packages/pymongo/helpers.py", line 210, in _check_command_response 
    raise OperationFailure(msg % errmsg, code, response) 
pymongo.errors.OperationFailure: Authentication failed. 

、私たちはクエリを実行しながら、エラーを発生させることなく、通常の応答を得ることができます。

+0

試してから撮影

、あなたはそのためのmongoシェルを使用することができます。 – Shashank

+0

@Shashank私は手動で同じ資格情報でmongoサーバーに接続できますが、私の目標は 'pymongo'を使ってmongoに接続することです –

+0

これらのソリューションを試しましたか?1. https://stackoverflow.com/questions/40346767/pymongo- auth-failed-in-python-script 2. https://stackoverflow.com/questions/36200288/mongolab-pymongo-connection-error 3. https://stackoverflow.com/questions/23682933/python-pymongo-認証に失敗しました – Shashank

答えて

0

あなたは認証エラーを持っているので、まずあなたは今、あなたはあなたの文書を挿入しようとすることができ

import pymongo 
from pymongo import MongoClient 

client = MongoClient('mongodb://abc:[email protected]:27017') 

する必要があります。手動で同じ資格情報を使用して、モンゴ・サーバとの接続official mongodb documentation

関連する問題