沿着PyMongo tutorial,当在集合上调用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.
网上有一些帖子讨论了这个错误,但似乎都是用户调用一个过时的名称时发生的。
有没有人能告诉我我做错了什么?
4条答案
按热度按时间mrphzbgm1#
这是一个明确的问题,但这里的问题似乎是,您正在阅读"beta"发行文档,但在所有的可能性,您实际上最多安装了“pymongo”2.8,而不是“3.0b”中提到的链接,您引用。
而2.8版教程则指向
.insert()
方法:由于
.insert_one()
仅在3.0b驱动程序中可用。要么强制安装“beta”驱动程序,要么使用稳定的驱动程序和可用的方法。
这似乎是目前“搜索引擎回应”将“beta版”匹配为“当前”的过错。
vshtjzan2#
问题是您正在按照当前发行文档中的教程进行操作,但实际上已经安装了PyMongo 2.8。
insert_one()
方法是PyMongo 3.0中的新方法,现在在PyMongo 2.9中向后移植。因此,显然您需要安装PyMongo 2.9或更高版本才能使用新的API特性。您可以使用
pip
安装或升级驱动程序。sg3maiej3#
我在集合上调用更新时遇到此错误。它现在是:
dpiehjr44#
我也面临着同样的问题。当我尝试使用以下命令升级我的PyMongo发行版时,
出现以下错误:
错误:无法创建"/usr/local/lib/python2.7/dist-packages/pymongo ":权限被拒绝
显然,在我的发行版中,由于权限不足,安装程序无法在dist-packages文件夹中创建库,因此,我通过授予它写权限并重新安装PyMongo驱动程序来解决这个问题:
希望这个有用。