Эта статья была первоначально опубликована на MongoDB . Спасибо за поддержку партнеров, которые делают возможным использование SitePoint.
В этой статье мы познакомим разработчиков с программированием MongoDB с использованием языка программирования Python. PyMongo — это имя клиентской библиотеки (на языке MongoDB мы называем ее «драйвером»), которую мы используем для взаимодействия с сервером MongoDB.
Для начала нам нужно установить набор инструментов, используемый типичным разработчиком MongoDB Python.
Установка м
Сначала м . Трудно найти в Интернете, если вы не ищете «MongoDB m», m — это инструмент для параллельного управления и использования нескольких установок Сервера MongoDB. Это бесценный инструмент, если вы хотите опробовать последнюю и лучшую бета-версию, но все еще продолжаете основную разработку нашего текущего стабильного выпуска.
Самый простой способ установить m — это с помощью npm менеджер пакетов Node.js (который оказывается не только для Node.js).
$ sudo npm install -gm Password:****** /usr/local/bin/m -> /usr/local/lib/node_modules/m/bin/m + [email protected] updated 1 package in 2.361s $
Если вы не можете или не хотите использовать npm, вы можете загрузить и установить его прямо из репозитория GitHub. Смотрите README там для деталей.
На сегодня мы будем использовать 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 stable :
$ 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 .
$ 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
Но эта серия не о оболочке 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) . Затем мы создаем объект локального client
(2), который содержит пул соединений и другой статус для этого сервера. Как правило, нам не нужно более одного объекта MongoClient
каждой программы, поскольку он предоставляет собственный пул соединений.
Теперь мы готовы подать команду на сервер. В этом случае это стандартная команда информации о сервере MongoDB, которая называется довольно анахронично isMaster
(3) . Это похмелье с самых ранних версий MongoDB. Появляется в версиях MongoDB до 1.0 (которой на данном этапе уже более десяти лет). Команда isMaster
возвращает dict
который детализирует кучу информации о сервере. Для более pprint
мы импортируем библиотеку pprint
.
Вывод
Мы установили MongoDB, установили клиентскую библиотеку Python (он же драйвер), запустили сервер mongod
и установили соединение между клиентом и сервером.
На следующей неделе мы представим CRUD-операции на MongoDB, начиная с Create .
Для прямой обратной связи, пожалуйста, задавайте свои вопросы в твиттере / jdrumgoole . Таким образом, каждый может увидеть ответы.
Лучший способ опробовать MongoDB — использовать MongoDB Atlas — нашу полностью управляемую базу данных как сервис, доступную на AWS, Google Cloud Platform (CGP) и Azure.