MongoClient insert_one工作正常,而mongoengine connect不起作用未经身份验证

问题描述

我尝试在验证后使用mongoengine界面插入文档,但仍然被拒绝。使用MongoClient不会发生这种情况...

这是mongoengine尝试插入一个文档的方法

In [1]: from mongoengine import connect

In [2]: db = connect(host='localhost',port=27017,username='root',password='pass')

In [3]: db.local.col.insert_one({'a':1})
---------------------------------------------------------------------------
OperationFailure                          Traceback (most recent call last)
<ipython-input-3-55a23806fbb1> in <module>
----> 1 db.local.col.insert_one({'a':1})

~/venv3.8/lib/python3.8/site-packages/pymongo/collection.py in insert_one(self,document,bypass_document_validation,session)
    696         write_concern = self._write_concern_for(session)
    697         return InsertOneResult(
--> 698             self._insert(document,699                          write_concern=write_concern,700                          bypass_doc_val=bypass_document_validation,~/venv3.8/lib/python3.8/site-packages/pymongo/collection.py in _insert(self,docs,ordered,check_keys,manipulate,write_concern,op_id,bypass_doc_val,session)
    611         """Internal insert helper."""
    612         if isinstance(docs,abc.Mapping):
--> 613             return self._insert_one(
    614                 docs,615                 bypass_doc_val,session)

~/venv3.8/lib/python3.8/site-packages/pymongo/collection.py in _insert_one(self,doc,session)
    600             _check_write_command_response(result)
    601
--> 602         self.__database.client._retryable_write(
    603             ackNowledged,_insert_command,session)
    604

~/venv3.8/lib/python3.8/site-packages/pymongo/mongo_client.py in _retryable_write(self,retryable,func,session)
   1496         """Internal retryable write helper."""
   1497         with self._tmp_session(session) as s:
-> 1498             return self._retry_with_session(retryable,s,None)
   1499
   1500     def _handle_getlasterror(self,address,error_msg):

~/venv3.8/lib/python3.8/site-packages/pymongo/mongo_client.py in _retry_with_session(self,session,bulk)
   1382         retryable = (retryable and self.retry_writes
   1383                      and session and not session.in_transaction)
-> 1384         return self._retry_internal(retryable,bulk)
   1385
   1386     def _retry_internal(self,bulk):

~/venv3.8/lib/python3.8/site-packages/pymongo/mongo_client.py in _retry_internal(self,bulk)
   1414                             raise last_error
   1415                         retryable = False
-> 1416                     return func(session,sock_info,retryable)
   1417             except ServerSelectionTimeoutError:
   1418                 if is_retrying():

~/venv3.8/lib/python3.8/site-packages/pymongo/collection.py in _insert_command(session,retryable_write)
    588                 command['bypassDocumentValidation'] = True
    589
--> 590             result = sock_info.command(
    591                 self.__database.name,592                 command,~/venv3.8/lib/python3.8/site-packages/pymongo/pool.py in command(self,dbname,spec,slave_ok,read_preference,codec_options,check,allowable_errors,read_concern,parse_write_concern_error,collation,client,retryable_write,publish_events,user_fields,exhaust_allowed)
    681             self._raise_if_not_writable(unackNowledged)
    682         try:
--> 683             return command(self,684                            self.is_mongos,685                            session,~/venv3.8/lib/python3.8/site-packages/pymongo/network.py in command(sock_info,is_mongos,listeners,max_bson_size,compression_ctx,use_op_m
sg,unackNowledged,exhaust_allowed)
    157                 client._process_response(response_doc,session)
    158             if check:
--> 159                 helpers._check_command_response(
    160                     response_doc,sock_info.max_wire_version,None,161                     allowable_errors,~/venv3.8/lib/python3.8/site-packages/pymongo/helpers.py in _check_command_response(response,max_wire_version,msg,parse_write_concern_error)
    165
    166             msg = msg or "%s"
--> 167             raise OperationFailure(msg % errmsg,code,response,168                                    max_wire_version)
    169

OperationFailure: command insert requires authentication,full error: {'ok': 0.0,'errmsg': 'command insert requires authentication','code': 13,'codeName': 'Unauthorized'}

失败,但是MongoClient出于某些原因起作用:

In [4]: from pymongo import MongoClient

In [5]: col = MongoClient(host='localhost',password='pass')

In [6]: col.local.col.insert_one({'a':1})
Out[6]: <pymongo.results.InsertOneResult at 0x7ff2a347a8c0>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...