sourcecode

수집 개체가 PyMongo에서 호출할 수 없는 오류입니다.

copyscript 2023. 3. 20. 23:26
반응형

수집 개체가 PyMongo에서 호출할 수 없는 오류입니다.

PyMongo 튜토리얼에 따라 콜할 때 오류가 발생합니다.insert_one콜렉션에 대한 메서드.

In [1]: import pymongo

In [2]: from pymongo import MongoClient

In [3]: client = MongoClient()

In [4]: db = client.new_db

In [5]: db
Out[5]: Database(MongoClient('localhost', 27017), u'new_db')

In [6]: posts = db.posts

In [7]: posts.insert_one({'a':1})
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-7-2271c01f9a85> in <module>()
----> 1 posts.insert_one({'a':1})

C:\Anaconda\lib\site-packages\pymongo-2.8-py2.7-win32.egg\pymongo\collection.py in __call__(self, *a
rgs, **kwargs)
   1771                         "call the '%s' method on a 'Collection' object it is "
   1772                         "failing because no such method exists." %
-> 1773                         self.__name.split(".")[-1])

TypeError: 'Collection' object is not callable. If you meant to call the 'insert_one' method on a 'Collection' object it is failing because no such method exists.

온라인에는 이 오류에 대해 설명하는 게시물이 몇 개 있지만, 모두 사용자가 사용되지 않는 이름을 호출할 때 게시된 것으로 보입니다.

내가 여기서 뭘 잘못하고 있는지 안내해줄래?

분명한 질문입니다만, 여기서의 문제는, 「베타」릴리스 메뉴얼을 참조하고 있는 것 같습니다만, 실제로는, 견적을 낸 링크의 「3.0b」가 아니고, 「pymongo」2.8이 인스톨 되어 있을 가능성이 높습니다.

2.8 릴리스 튜토리얼에서는 대신 다음 방법을 설명합니다.

posts.insert({'a':1})

는 3.0b 드라이버에서만 사용할 수 있습니다.

「베타」드라이버를 강제 인스톨 하거나, 안정된 드라이버와 사용 가능한 방법을 사용해 주세요.

이는 현재 "검색 엔진 응답"이 "베타 릴리스"와 "현재"로 일치하는 결함으로 보입니다.

문제는 현재 릴리스 설명서의 튜토리얼을 따르고 있지만 실제로는 PyMongo 2.8이 설치되어 있다는 것입니다.

이 방법은 PyMongo 3.0에서 새로운 것으로, 현재는 PyMongo 2.9에서 역수출되고 있습니다.따라서 새로운 API 기능을 사용하려면 PyMongo 2.9 이후 버전을 설치해야 합니다.

드라이버를 인스톨 또는 업그레이드 할 수 있는 것은, 다음과 같습니다.pip맘에 들다.

python -m pip install -U pymongo

컬렉션 업데이트를 호출할 때 이 오류가 발생했습니다.바로 지금:

from pymongo import MongoClient

db = MongoClient('localhost', 27017).my_db_name
db.my_collection_name.update_one( ... )

저도 같은 문제에 직면해 있었습니다.명령어를 사용하여 PyMongo 디스트리뷰션을 업그레이드하려고 했을 때

pip install -U pymongo

다음 오류가 발생하였습니다.

오류: '/usr/local/lib/python2.7/dist-packages/pymongo'를 생성할 수 없습니다. 권한이 거부되었습니다.

내 디스트로에서는 권한이 부족하여 설치 관리자가 dist-packages 폴더에 라이브러리를 만들 수 없었던 것 같습니다.그래서 쓰기 권한을 부여하고 PyMongo 드라이버를 다시 설치함으로써 문제를 해결했습니다.

cd /usr/local/lib/python2.7/
sudo chmod 0777 dist-packages
pip install -U pymongo

이게 도움이 됐으면 좋겠다.

언급URL : https://stackoverflow.com/questions/28981718/collection-object-is-not-callable-error-with-pymongo

반응형