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.
在网上有几篇文章讨论这个错误,但是当用户调用一个不赞成使用的名字时,似乎都是这样。
任何指导我在做什么错在这里?
这是一个明确的问题,但这里的问题似乎是,你正在阅读“testing版”的发布文档,但实际上最多只有安装了“pymongo”2.8而不是链接中提到的“3.0b”引用。
2.8发布教程指向.insert()
方法:
posts.insert({'a':1})
由于.insert_one()
仅在3.0b驱动程序中可用。
要么强制安装“testing版”的驱动程序,要么使用稳定的驱动程序和可用的方法。
这似乎是当前“search引擎响应”匹配“testing版”为“当前”的错。
问题是,你正在从当前版本文档的教程,但实际上已经安装了PyMongo 2.8。
PyMongo 3.0中的insert_one()
方法是新的,现在在PyMongo 2.9中被反向移植了。 很显然,您将需要安装PyMongo 2.9或更新版本才能使用新的APIfunction。
你可以使用像安装或升级你的驱动程序。
python -m pip install -U pymongo
我也面临同样的问题。 当我尝试使用命令升级我的PyMongo发行版时,
pip install -U pymongo
我得到了以下错误:
错误:无法创build'/usr/local/lib/python2.7/dist-packages/pymongo':权限被拒绝
显然,在我的发行版中,由于权限不足,安装程序无法在dist-packages文件夹中创build库。 所以,我通过授予它写权限并重新安装PyMongo驱动程序来解决问题:
cd /usr/local/lib/python2.7/ sudo chmod 0777 dist-packages pip install -U pymongo
希望这可以帮助。