#python-3.x #mongodb #pymongo
#python-3.x #mongodb #pymongo
Вопрос:
Я продолжаю получать pymongo.errors.ConfigurationError: query() got an unexpected keyword argument 'lifetime'
, хотя у меня установлены все последние версии pymongo и dnspython. Это мой код…
import pymongo
client = pymongo.MongoClient("mongodb srv://Nethrenial:notrealpassword@db-for-toodooo.shhiq.mongodb.net/TooDooo?retryWrites=trueamp;w=majority")
users = client.users.find()
user_list = []
for user in users:
user_list.append(user)
print(user_list)
И это полное исключение,
Traceback (most recent call last):
File "C:UserslenovoAppDataLocalProgramsPythonPython39libsite-packagespymongosrv_resolver.py", line 72, in _resolve_uri
results = resolver.query('_mongodb._tcp.' self.__fqdn, 'SRV',
TypeError: query() got an unexpected keyword argument 'lifetime'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:UserslenovoDesktopTooDooodatabase_functions.py", line 4, in <module>
client = pymongo.MongoClient("mongodb srv://Nethrenial:nethrenial@db-for-toodooo.shhiq.mongodb.net/TooDooo?retryWrites=trueamp;w=majority")
File "C:UserslenovoAppDataLocalProgramsPythonPython39libsite-packagespymongomongo_client.py", line 639, in __init__
res = uri_parser.parse_uri(
File "C:UserslenovoAppDataLocalProgramsPythonPython39libsite-packagespymongouri_parser.py", line 500, in parse_uri
nodes = dns_resolver.get_hosts()
File "C:UserslenovoAppDataLocalProgramsPythonPython39libsite-packagespymongosrv_resolver.py", line 102, in get_hosts
_, nodes = self._get_srv_response_and_hosts(True)
File "C:UserslenovoAppDataLocalProgramsPythonPython39libsite-packagespymongosrv_resolver.py", line 83, in _get_srv_response_and_hosts
results = self._resolve_uri(encapsulate_errors)
File "C:UserslenovoAppDataLocalProgramsPythonPython39libsite-packagespymongosrv_resolver.py", line 79, in _resolve_uri
raise ConfigurationError(str(exc))
pymongo.errors.ConfigurationError: query() got an unexpected keyword argument 'lifetime'
Комментарии:
1. Пожалуйста, опубликуйте свой вывод
pip freeze
Ответ №1:
Если вы используете Python 3, вы должны использовать dnspython3
вместо dnspython
. Эта библиотека фактически использует dnspython
under the hood, но устанавливает неправильную версию 1.15.0, такую же, как для основной библиотеки. Вы должны изменить его вручную на 2.1.0. На ПК (Windows) также устанавливается starlette
библиотека. Никогда не меняйте ее версию для обновления, она перестает работать.
Проблемы несовместимости и плохая поддержка экосистемы, по-видимому, являются распространенной проблемой в мире Python.
Комментарии:
1. Мне нужно попробовать это, и да, много проблем с несовместимостью. Я попытался node.js уже какое-то время. Я думаю, что это хорошо подходит для меня. В любом случае, спасибо, что ответили на мой вопрос, очень ценю это.
2. pip install dnspython== 2.1.0 сработал для меня; Я также проигнорировал ошибку конфликта.
Ответ №2:
В большинстве случаев это происходит из-за устаревшей библиотеки dnspython. Я решил свою проблему, просто переустановив / обновив dnspython
pip3 install dnspython
Ответ №3:
Казнь pip install dnspython
не сработала для меня. Следующий код выполнил задание:
from pymongo import MongoClient
import dns.resolver
dns.resolver.default_resolver=dns.resolver.Resolver(configure=False)
dns.resolver.default_resolver.nameservers=['8.8.8.8']
Ответ №4:
Для меня удаление / установка pymongo решила проблему (обновление не помогло):
pip uninstall pymongo
pip install pymongo