集合对象不可调用PyMong错误

2024-06-06 12:48:36 发布

您现在位置:Python中文网/ 问答频道 /正文

接下来是PyMongotutorial,我在调用集合上的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.

网上有一些帖子讨论了这个错误,但是当用户调用一个不推荐的名字时,所有的帖子似乎都是这样。

有什么关于我做错什么的指导吗?


Tags: inimportclientdbobjectis错误call
3条回答

我也面临同样的问题。当我尝试使用命令升级我的PyMongo发行版时

pip install -U pymongo

我得到以下错误:

error: could not create '/usr/local/lib/python2.7/dist-packages/pymongo': Permission denied

显然,在我的发行版上,由于权限不足,安装程序无法在dist packages文件夹中创建库。因此,我通过授予它写权限并重新安装PyMongo驱动程序解决了这个问题:

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

希望这有帮助。

问题是,您正在遵循当前版本文档中的教程,但实际上已经安装了PyMongo 2.8。

PyMongo 3.0中的^{}方法是新的,现在已在PyMongo 2.9中进行了移植。因此很明显,您需要安装PyMongo 2.9或更高版本才能使用新的API特性。

您可以使用piplike安装或升级驱动程序。

python -m pip install -U pymongo

这是一个明确的问题,但这里的问题似乎是您正在阅读"beta"发行版文档,但很可能您实际上最多安装了“pymongo”2.8,而不是引用链接中提到的“3.0b”。

2.8 release tutorial改为指向^{}方法:

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

因为^{}只在3.0b驱动程序中可用。

要么强制安装“beta”驱动程序,要么使用稳定的驱动程序和可用的方法。

这似乎是当前“搜索引擎响应”与“beta版本”匹配为“当前”的错误。

相关问题 更多 >