Pymongoでinsert_one使うとエラー

python logo

python logo

MongoDBの薄い本を読みながら、mongodbの勉強しておりまっす。

Pymongoも同時に勉強していまして、薄い本の最初からやってみたのよ!!

参考にしてるソースはこちらでした。

Python Driver (PyMongo)
https://docs.mongodb.com/getting-started/python/insert/

そしたらこれ

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from pymongo import MongoClient
client = MongoClient()
db = client.learn
count = db.unicorns.count()
print "*" * 30
print "db.unicorns count=",count
print "*" * 30
if __name__ == "__main__":
import sys
if len(sys.argv) > 1:
new_unicorn = {}
new_unicorn["name"] = sys.argv[1]
new_unicorn["gender"] = "m"
result = db.unicorns.insert_one(new_unicorn)
print result
cursor = db.unicorns.find({"_id": result})
for document in cursor:
print(document)

Traceback (most recent call last):
File “mongotest.py”, line 21, in <module>
result = db.unicorns.insert_one(new_unicorn)
File “/Library/Python/2.7/site-packages/pymongo/collection.py”, line 1709, in __call__
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.

あらー

そしたらここに答えが

http://stackoverflow.com/questions/28981718/collection-object-is-not-callable-error-with-pymongo

It is a clear question but the problem here seems to be that you are reading from the “beta” release documentation but in all likelihood you actually at most have “pymongo” 2.8 installed rather than the “3.0b” referred to in the link you quote.

The 2.8 release tutorial points to the .insert() method instead:

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

Since .insert_one() is only available in the 3.0b driver.

ごめんねーー。バージョンのせいだった。

私、Python2.7だったよーというお話しでした(T_T)

正解はこちら

result = db.unicorns.insert(new_unicorn)

できてよかったー(^o^)

スポンサーリンク
hige1
hige1

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
hige1