Skip to content

6. (П3) Еволюція погодного сервісу з Alembic

Передумови

Завдання

Взяти за основу свій проєкт з практичної 3 та додати до нього Alembic для управління міграціями. Таблицю, яку ви створювали вручну (через Python-код), тепер потрібно створювати через міграції Alembic.

Крок 1. Ініціалізація Alembic

  1. Встановити Alembic: pip install alembic
  2. Ініціалізувати Alembic у проєкті: alembic init alembic
  3. Створити нову (порожню) БД
  4. Налаштувати підключення до БД в alembic/env.py (див. лекцію 05)

Крок 2. Міграція — створення таблиці weather

Створити міграцію, яка створює таблицю weather (ту саму, що була в практичній 3):

alembic revision -m "create weather table"

Заповнити функції upgrade() та downgrade() у створеному файлі міграції. Видалити з Python-коду ручне створення таблиці — тепер за це відповідає Alembic.

Застосувати міграцію:

alembic upgrade head

Переконатися, що сервіс працює як і раніше.

Крок 3. Міграція — додати вологість

Створити міграцію, яка додає колонку humidity (вологість) до таблиці weather:

alembic revision -m "add humidity to weather"

Отримати вологість можна з wttr.in:

curl "https://wttr.in/Lutsk?format=%h"

Оновити Python-код сервісу:

  • Зберігати вологість разом з температурою. (Якщо ваш сервіс не повертає вологість, можна обрати любий інший параметр)
  • Виводити вологість в команді history

Крок 4. Демонстрація відкату

Продемонструвати роботу відкату міграцій:

# Перевірити поточний стан
alembic current

# Відкатити останню міграцію
alembic downgrade -1

# Перевірити стан
alembic current

# Повернутися до останньої версії
alembic upgrade head

Формат виводу команди history

Weather history from: <Ім'я Прізвище>:
<Час> <температура> <вологість> <швидкість вітру>
...
<Час> <температура> <вологість> <швидкість вітру>

Час має бути відсортований у спадному порядку.


Знайшли помилку чи бажаєте додати інформацію, щоб покращити курс? Створіть issue на GitHub