Настройка среды PyMongo

Настройка среды PyMongo

В этой статье мы познакомим разработчиков с использованием MongoDB для языка программирования Python. PyMongo — это имя клиентской библиотеки (в MongoDB говорят, что мы называем это «драйвером»), который мы используем для взаимодействия с сервером MongoDB.

Для начала нам нужно установить инструментальную цепочку, используемую типичным разработчиком MongoDB Python.

Установка m

Самый простой способ установить m — с npm менеджером пакетов Node.js (который, как оказалось, не только для Node.js).

$ sudo npm install -g m
Password:******
/usr/local/bin/m -> /usr/local/lib/node_modules/m/bin/m
+ m@1.4.1
updated 1 package in 2.361s
$

Если вы не можете или не хотите использовать npm, вы можете скачать и установить непосредственно из репозитория GitHub. На сегодняшний день мы будем использовать m для установки текущей стабильной версии (4.0.2 на момент написания). Для этого мы запускаем стабильную команду.

$ m stable
MongoDB version 4.0.2 is not installed.
Installation may take a while. Would you like to proceed? [y/n] y
... installing binary

################################################################## 100.0%
/Users/jdrumgoole
... removing source
... installation complete
$

Если вам нужно использовать путь непосредственно в другой программе, вы можете это сделать с помощью m bin.

$ m bin 4.0.0
/usr/local/m/versions/4.0.1/bin
$

Чтобы запустить соответствующий двоичный файл, используйте константу:

$ m use stable
2018-08-28T11:41:48.157+0100 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2018-08-28T11:41:48.171+0100 I CONTROL [initandlisten] MongoDB starting : pid=38524 port=27017 dbpath=/data/db 64-bit host=JD10Gen.local
2018-08-28T11:41:48.171+0100 I CONTROL [initandlisten] db version v4.0.2
2018-08-28T11:41:48.171+0100 I CONTROL [initandlisten] git version: fc1573ba18aee42f97a3bb13b67af7d837826b47
< other server output >
...
2018-06-13T15:52:43.648+0100 I NETWORK [initandlisten] waiting for connections on port 27017

Теперь, когда у нас работает сервер, мы можем проверить, что он работает, подключаясь через mongo shell.

$ mongo
MongoDB shell version v4.0.0
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.0
Server has startup warnings:
2018-07-06T10:56:50.973+0100 I CONTROL [initandlisten]
2018-07-06T10:56:50.973+0100 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-07-06T10:56:50.973+0100 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2018-07-06T10:56:50.973+0100 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2018-07-06T10:56:50.973+0100 I CONTROL [initandlisten]
2018-07-06T10:56:50.973+0100 I CONTROL [initandlisten] ** WARNING: This server is bound to localhost.
2018-07-06T10:56:50.973+0100 I CONTROL [initandlisten] ** Remote systems will be unable to connect to this server.
2018-07-06T10:56:50.973+0100 I CONTROL [initandlisten] ** Start the server with --bind_ip < address> to specify which IP
2018-07-06T10:56:50.973+0100 I CONTROL [initandlisten] ** addresses it should serve responses from, or with --bind_ip_all to
2018-07-06T10:56:50.973+0100 I CONTROL [initandlisten] ** bind to all interfaces. If this behavior is desired, start the
2018-07-06T10:56:50.973+0100 I CONTROL [initandlisten] ** server with --bind_ip 127.0.0.1 to disable this warning.
2018-07-06T10:56:50.973+0100 I CONTROL [initandlisten]

---
Enable MongoDB's free cloud-based monitoring service to collect and display
metrics about your deployment (disk utilization, CPU, operation statistics,
etc).

The monitoring data will be available on a MongoDB website with a unique
URL created for you. Anyone you share the URL with will also be able to
view this page. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.

To enable free monitoring, run the following command:
db.enableFreeMonitoring()
---

>

Эти предупреждения являются стандартными. Они отмечают, что по умолчанию эта база данных не имеет настроек контроля доступа, и что она только слушает подключения, поступающие с компьютера, на котором он запущен (localhost). Дальше будет рассказано, как настроить контроль доступа и прослушивать более широкий диапазон портов.

Установка драйвера PyMongo

Но эта статья не о Shell MongoDB, которая использует JavaScript в качестве своей оболочки, а о Python. Как подключиться к базе данных с помощью Python?

Сначала нам нужно установить драйвер Python от MongoDB — PyMongo. В языке MongoDB драйвер является языковой клиентской библиотекой, которая позволяет разработчикам взаимодействовать с сервером в паре собственного языка программирования.

Для Python это означает установку драйвера с помощью pip. В node.js драйвер устанавливается с использованием npm, а на Java вы можете использовать maven.

$ pip3 install pymongo
Collecting pymongo
Downloading https://files.pythonhosted.org/packages/a1/e0/51df08036e04c1ddc985a2dceb008f2f21fc1d6de711bb6cee85785c1d78/pymongo-3.7.1-cp27-cp27m-macosx_10_13_intel.whl (333kB)
100% |████████████████████████████████| 337kB 4.1MB/s
Installing collected packages: pymongo
Successfully installed pymongo-3.7.1
$

Мы рекомендуем использовать виртуальную среду для изоляции вашего кода PyMongo Monday. Это не обязательно, но очень удобно для изоляции различных потоков разработки.

 

Теперь мы можем подключиться к базе данных:

$ python
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymongo (1)
>>> client = pymongo.MongoClient(host="mongodb://localhost:8000") (2)
>>> result = client.admin.command("isMaster") (3)
>>> import pprint
>>> pprint.pprint(result)
{'ismaster': True,
'localTime': datetime.datetime(2018, 6, 13, 21, 55, 2, 272000),
'logicalSessionTimeoutMinutes': 30,
'maxBsonObjectSize': 16777216,
'maxMessageSizeBytes': 48000000,
'maxWireVersion': 6,
'maxWriteBatchSize': 100000,
'minWireVersion': 0,
'ok': 1.0,
'readOnly': False}
>>>

Сначала мы импортируем библиотеку PyMongo (1). Затем мы создаем локальный клиентский объект (2), который содержит пул соединений и статус этого сервера. Теперь мы готовы выдать команду серверу. В этом случае это стандартная команда сервера MongoDB, которая называется анахронически isMaster (3). Команда isMaster возвращает dict, который детализирует информацию о сервере. Чтобы отформатировать это более читаемым способом, мы импортируем библиотеку pprint.

 

Заключение

Мы установили MongoDB, клиентскую библиотеку Python, запустили сервер mongodb и установили соединение между клиентом-сервером. Возможно на этой неделе, будет еще 1 статья, посвященная CRUD c использованием MongoDB и Python.

Настройка среды PyMongo: 3 комментария

  1. Какой смысл использовать Mongodb если он сложный ? проще mysql, тоже база данных и легче..

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *