Добро пожаловать на нашу "экспедицию" в мир MongoDB и FastAPI! Сегодня мы научимся устанавливать MongoDB, подключать её к FastAPI и готовить окружение для разработки. Готовьтесь к захватывающему путешествию!
MongoDB — это база данных, которая позволяет гибко хранить данные: она быстро работает, легко масштабируется и отлично подходит для проектов с изменяющимися требованиями. А FastAPI — это современный веб-фреймворк, который поддерживает асинхронный ввод-вывод и позволяет писать быстрые и надёжные API. Вместе они создают мощную связку для разработки современных приложений.
Установка MongoDB
Начнем с установки MongoDB. Есть три основных способа её развернуть: локально, через Docker и в облаке. Рассмотрим каждый из них.
Локальная установка MongoDB
Если вы хотите установить MongoDB прямо на свою машину, выполните следующие шаги:
- Скачайте дистрибутив с официального сайта MongoDB под вашу ОС.
- Установите:
- Windows/macOS: просто запустите установщик и следуйте инструкциям. Рекомендуется включить опцию "Install MongoDB as a Service".
- Linux (Ubuntu):
sudo apt update sudo apt install -y mongodb
- Запустите сервер:
mongod - Проверьте работу клиента:
mongo
Если видите командную строку MongoDB — всё работает. Поздравляем!
Установка через Docker
Если вы предпочитаете использовать контейнеры, Docker отлично подойдёт:
- Скачайте образ:
docker pull mongo - Запустите контейнер:
docker run --name mongodb -d -p 27017:27017 mongo
MongoDB будет доступна по адресу localhost:27017.
Облачный вариант: MongoDB Atlas
Если вы не хотите возиться с установкой, есть третий вариант — облачный сервис MongoDB Atlas.
Вы просто создаёте аккаунт на mongodb.com/cloud/atlas, разворачиваете кластер через удобный интерфейс — и можно сразу подключаться к базе данных из любого приложения.
Этот способ особенно удобен, если вы работаете в команде, хотите удалённый доступ или не желаете тратить время на локальную настройку.
Настройка подключения MongoDB
Теперь проверим, что наша MongoDB готова к работе.
Для проверки работоспособности базы данных можно использовать mongo shell (поставляется вместе с MongoDB). Открываем терминал и вводим:
mongo
Вот пример команды для создания новой базы данных:
use my_new_database
Создадим коллекцию и добавим в неё документ:
db.my_collection.insertOne({name: "FastAPI User", age: 29})
И проверим, что данные добавлены:
db.my_collection.find()
Если всё работает, MongoDB готова к работе с FastAPI.
Подключение FastAPI к MongoDB
Теперь мы подключим FastAPI к MongoDB. Для этого воспользуемся библиотекой motor, которая поддерживает асинхронную работу с MongoDB.
Устанавливаем библиотеку:
pip install motor
Motor — это асинхронный клиент для MongoDB, построенный поверх библиотеки pymongo. С его помощью мы сможем выполнять все операции с MongoDB в асинхронном режиме.
Настройка подключения
Начнем с подключения FastAPI к базе данных MongoDB.
Создадим модуль для подключения, например, db.py:
from motor.motor_asyncio import AsyncIOMotorClient
# Подключаемся к MongoDB
client = AsyncIOMotorClient("mongodb://localhost:27017")
database = client["my_database"]
collection = database["my_collection"]
Здесь:
AsyncIOMotorClient— объект подключения.database— база данных, с которой мы работаем.collection— конкретная коллекция в базе данных.
Простая проверка подключения
Создадим файл main.py:
from fastapi import FastAPI
from db import collection
app = FastAPI()
@app.get("/")
async def read_root():
data = await collection.find_one({"name": "FastAPI User"})
return data
Запустим приложение:
uvicorn main:app --reload
Перейдите в браузер по адресу http://127.0.0.1:8000/, и если всё настроено правильно, вы увидите документ из базы данных.
Использование альтернативных библиотек
Если вы не хотите использовать motor, есть другие варианты, например:
- pymongo: синхронная библиотека для работы с MongoDB.
- mongomock: библиотека для создания моков MongoDB в тестах.
Однако для асинхронного FastAPI motor является лучшим выбором.
Частые ошибки и их решение
- Ошибка подключения (Server Selection Timeout Error): убедитесь, что сервер MongoDB запущен и слушает порт
27017. Проверьте конфигурацию подключения. - Версия Python: убедитесь, что вы используете Python 3.10+ (FastAPI и Motor требуют современных версий).
- Типичные тайм-ауты с Docker: если вы на Windows / macOS, проверьте настройки сети Docker.
Что ж, мы сделали первый шаг к разработке Настройка подключения приложений на базе MongoDB. В следующей лекции мы начнем исследовать основные CRUD-операции с MongoDB.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ