Сохранение данных Python - модуль PyMongo

MongoDB ориентирована на документы NoSQLбаза данных. Это кроссплатформенная база данных, распространяемая под общедоступной лицензией на стороне сервера. Он использует JSON-подобные документы в качестве схемы.

Чтобы обеспечить возможность хранения огромных данных, более одного физического сервера (называемого шардами) соединены между собой, так что достигается горизонтальная масштабируемость. База данных MongoDB состоит из документов.

Документ аналогичен строке в таблице реляционной базы данных. Однако у него нет конкретной схемы. Документ - это набор пар ключ-значение, аналогичный словарю. Однако количество пар квантовых напряжений в каждом документе может отличаться. Так же, как таблица в реляционной базе данных имеет первичный ключ, документ в базе данных MongoDB имеет специальный ключ, называемый"_id".

Прежде чем мы увидим, как база данных MongoDB используется с Python, давайте вкратце разберемся, как установить и запустить MongoDB. Доступна общественная и коммерческая версия MongoDB. Версию сообщества можно загрузить с сайта www.mongodb.com/download-center/community .

Предполагая, что MongoDB установлен в c: \ mongodb, сервер можно вызвать с помощью следующей команды.

c:\mongodb\bin>mongod

По умолчанию сервер MongoDB активен на порту 22017. Базы данных по умолчанию хранятся в папке data / bin, хотя расположение можно изменить с помощью опции –dbpath.

MongoDB имеет собственный набор команд для использования в оболочке MongoDB. Чтобы вызвать оболочку, используйтеMongo команда.

x:\mongodb\bin>mongo

Подсказка оболочки, аналогичная подсказке оболочки MySQL или SQLite, перед которой могут быть выполнены собственные команды NoSQL. Однако нас интересует подключение базы данных MongoDB к Python.

PyMongoМодуль был разработан самой MongoDB Inc для обеспечения интерфейса программирования Python. Используйте известную утилиту pip для установки PyMongo.

pip3 install pymongo

Предполагая, что сервер MongoDB запущен и работает (с mongod команда) и прослушивает порт 22017, нам сначала нужно объявить MongoClientобъект. Он контролирует все транзакции между сеансом Python и базой данных.

from pymongo import MongoClient
client=MongoClient()

Используйте этот клиентский объект для установления соединения с сервером MongoDB.

client = MongoClient('localhost', 27017)

Новая база данных создается с помощью следующей команды.

db=client.newdb

База данных MongoDB может иметь множество коллекций, похожих на таблицы в реляционной базе данных. Объект Collection создаетсяCreate_collection() функция.

db.create_collection('students')

Теперь мы можем добавить один или несколько документов в коллекцию следующим образом:

from pymongo import MongoClient
client=MongoClient()
db=client.newdb
db.create_collection("students")
student=db['students']
studentlist=[{'studentID':1,'Name':'Juhi','age':20, 'marks'=100},
{'studentID':2,'Name':'dilip','age':20, 'marks'=110},
{'studentID':3,'Name':'jeevan','age':24, 'marks'=145}]
student.insert_many(studentlist)
client.close()

Чтобы получить документы (аналогично запросу SELECT), мы должны использовать find()метод. Возвращает курсор, с помощью которого можно получить все документы.

students=db['students']
docs=students.find()
for doc in docs:
   print (doc['Name'], doc['age'], doc['marks'] )

Чтобы найти конкретный документ вместо всех из них в коллекции, нам нужно применить фильтр к методу find (). В фильтре используются логические операторы. MongoDB имеет свой собственный набор логических операторов, как показано ниже -

Старший Нет Оператор MongoDB и традиционный логический оператор
1

$eq

равно (==)

2

$gt

больше чем (>)

3

$gte

больше или равно (> =)

4

$in

если равно любому значению в массиве

5

$lt

меньше чем (<)

6

$lte

меньше или равно (<=)

7

$ne

не равно (! =)

8

$nin

если не равно какому-либо значению в массиве

Например, мы заинтересованы в получении списка студентов старше 21 года. Использование оператора $ gt в фильтре дляfind() метод следующим образом -

students=db['students']
docs=students.find({'age':{'$gt':21}})
for doc in docs:
   print (doc.get('Name'), doc.get('age'), doc.get('marks'))

Модуль PyMongo предоставляет update_one() и update_many() методы для изменения одного документа или нескольких документов, удовлетворяющих определенному выражению фильтра.

Обновим атрибут mark для документа с именем Juhi.

from pymongo import MongoClient
client=MongoClient()
db=client.newdb
doc=db.students.find_one({'Name': 'Juhi'})
db['students'].update_one({'Name': 'Juhi'},{"$set":{'marks':150}})
client.close()