Insert_one такого метода не существует @ pymongo 3.7.2 - PullRequest
0 голосов
/ 08 ноября 2018

Я довольно новичок в изучении Python и всего, что с ним связано.

Я попытался сделать свои первые маленькие шаги, установив MongoDB (работающий) и подключившись к нему.

from pymongo import MongoClient
from pprint import pprint
from random import randint



client = MongoClient('localhost', 27017)
db = client.test
collection = db.users

user = {"id": 1, "username": "Test"}

user_id = collection.insert_one(user).inserted_id
print(user_id)

Это полный код.

pymongo Версия: 3.7.2 проверяется с помощью:

pip freeze | grep pymongo
Output: pymongo==3.7.2

Версия Python: 3.7.1

Если я пытаюсь выполнить мой крошечный скрипт, возникает следующая ошибка:

'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.

Где моя вина?

Небольшое исследование показало, что в pymongo v2 ".insert_one" - это ".insert", но установлена ​​версия 3.7.2, поэтому я должен (и должен) использовать ".insert.one", а не ". вставить "

1 Ответ

0 голосов
/ 08 ноября 2018

insert_one в соответствии с документацией pymongo, для версии сервера> = 3.2 ...

использование:

user = {'x': 1}
result = db.test.insert_one(user)
result.inserted_id

более полное объяснение о insert_one:

>>> db.test.count_documents({'x': 1})
0
>>> result = db.test.insert_one({'x': 1})
>>> result.inserted_id
ObjectId('54f112defba522406c9cc208')
>>> db.test.find_one({'x': 1})
{u'x': 1, u'_id': ObjectId('54f112defba522406c9cc208')}

ниже, я выполнил и прекрасно работает:

# importing client mongo to make the connection
from pymongo import MongoClient

print("--- Exemplo pymongo Connection ---")

# Connection to MongoDB
client = MongoClient('localhost', 27017)

# Selection the Database
db = client.python

# Select the collection
collection = db.users

# Set up a document
user = {"id": 1, "username": "Test"}

# insert one document into selected document
result = collection.insert_one(user)

# Selection just one document from collection
#result = collection.find_one()

# removing the document inserted
collection.delete_one(user)

# print the inserted_id
print("inserted_id: ", result.inserted_id)

Документация Pymongo

...