MongoDB и Python
Примеры Python pymongo, python mongodb, python базы данных, python примеры
Вскоре я буду заниматься разработкой одного сложного проекта с высокой нагрузкой. Для высоких нагрузок лучше не пользоваться привычной базой данных MySQL, в целях сохранности данных. Поэтому придется расширять свои практические умения использования нереляционных баз данных.
Далее мы рассмотрим, как можно работать с Python и ориентированной на документы базой данных MongoDB. Для начала необходимо загрузить с официального сайта http://www.mongodb.org/downloads проекта сам инструмент, нам нужна самая актуальная стабильная версия. Итак, скачали, распаковали, и видим такое:
.
├── bin
│ ├── bsondump
│ ├── mongo
│ ├── mongod
│ ├── mongodump
│ ├── mongoexport
│ ├── mongofiles
│ ├── mongoimport
│ ├── mongorestore
│ ├── mongos
│ ├── mongosniff
│ └── mongostat
├── GNU-AGPL-3.0
├── README
└── THIRD-PARTY-NOTICES
Стартуем сервер базы данных mogod и получаем такое уведомление:
exception in initAndListen std::exception: dbpath (/data/db/) does not exist, terminating
Для того, чтобы сервер нормально работал нам нужен каталог, по стандартным настройкам указан /data/db. Чтобы указать свой воспользуемся ключом – dbpath:
bin/mongod --dbpath /home/toly/db
Далее нужно скачать и установить библиотеку Python ползволяющую работать с MongoDB:
git clone git://github.com/mongodb/mongo-python-driver.git pymongo
cd pymongo
sudo ./setup.py install
Прежде чем приводить пример комментированного кода разъясню как организованы данные в MongoDB. Один сервер может содержать сразу несколько БД. В базу мы можем помещать сразу несколько сборок документов. Если сравнивать с привычной MySQL, то это похоже на таблицы. В коллекциях размещены документы. А сам документ это сериализированные данные представленные в JSON формате. К примеру, если у нас имеется документ из картотеки персонала, то он будет иметь следующий вид:
{"Фамилия":"Петров",
"Имя": "Петр",
"Отчество": "Петрович",
"Адрес": {"Город": "Новосибирск",
"Улица": "Строителей",
"Дом": 12,
"Квартира": 8}}
Отметим, что реляционным базам данных характерна заранее предусмотренная структура записи данных. А в документо-ориентированных базах нет жесткой структурированности, поэтому у документов в одной коллекции могут быть различные поля.
Теперь рассмотрим код с комментариями, в котором показано, как нужно работать с библиотекой pymongo:
# импортируем pymongo
import pymongo
# соединяемся с сервером базы данных
# (по умолчанию подключение осуществляется на localhost:27017)
conn = pymongo.Connection()
# подключаемся к другому серверу, на другой порт
conn = pymongo.Connection('localhost', 27017)
# выбираем базу данных
db = conn.mydb
# БД можно выбрать и так
db = conn['mydb']
# выбираем коллекцию документов
coll = db.mycoll
# альтернативный выбор коллекции документов
coll = db['mycoll']
# осуществляем добавление документа в коллекцию,
# который содержит поля name и surname - имя и фамилия
doc = {"name":"Иван", "surname":"Иванов"}
coll.save(doc)
# альтернативное добавление документа
coll.save({"name":"Петр", "surname":"Петров"})
# выводим все документы из коллекции coll
for men in coll.find():
print men
# выводим фамилии людей с именем Петр
for men in coll.find({"name": "Петр"})
print men["surname"]
# подсчет количества людей с именем Петр
print coll.find({"name": "Петр"}).count()
# добавляем ко всем документам новое поле sex - пол
coll.update({}, {"$set":{"sex": "мужской"}})
# всем Петрам делаем фамилию Новосельцев и возраст 25 лет
coll.update({"name": "Петр"}, {"surname": "Новосельцев", "age": 25})
# увеличиваем всем Петрам возраст на 5 лет
coll.update({"name": "Петр"}, {"$inc": {"age": 5}})
# сбрасываем у всех документов поле name
coll.update({}, {"$unset": {"name": 1}})
# удаляем людей с возрастом более 20 лет
# другие условия $gt - больше, $lt - меньше,
# $lte - меньше или равно, $gte - больше или равно, $ne - не равно
coll.remove({"age": {"$gt": 20}})
# удаляем все документы коллекции
coll.remove({})
Вот и все, ничего сложного вроде бы нет.
А если вам нужны биологические индикаторы, с помощь которых вы вовремя зафиксируете изменения окружающей среды, заходите на сайт http://www.ru.all.biz/indikatory-biologicheskie-bgg1041525. Здесь вы найдете различные качественные биологические индикаторы по самым доступным ценам.