最近pip install pymono后,連接時認證出現問題,報了TypeError: 'Collection' object is not callable. If you meant to call the 'authenticate' method on a 'Database' object it is failing because no such method exists.的錯
Traceback (most recent call last): File "D:/work/py/test.py", line 37, in <module> admin.authenticate("root", "123456") File "C:\python3\lib\site-packages\pymongo\collection.py", line 2583, in __call__ self.__name) TypeError: 'Collection' object is not callable. If you meant to call the 'authenticate' method on a 'Database' object it is failing because no such method exists.
之前一直這樣連接是沒有問題的,於是再想是不是版本問題,查找一通文檔后,確實是pymongo升級到4.0后的認證方式改變
官方文檔中解釋如下:
之前的認證方式:
client = pymongo.MongoClient("127.0.0.1", 43127) admin = client.get_database("admin") # 連接所需數據庫 admin.authenticate("root", "123456")
解決辦法:
1、把pymongo降到4.0以下
pip uninstall pymongo
pip install pymongo==3.xx.xx
2、更改為新的認證方式:
client = pymongo.MongoClient("127.0.0.1", 43127, username="root", password="123456")
參考: