Найти в Дзене
Заходи в Ай-Ти

FastAPI - создание web-приложения. Часть 6 (Создание таблиц)

Продолжнаем изучайть фреймворк fastapi python. Прежде чем мы поговорим о таблицах баз данных и всем остальном, я хочу поделиться очень упрощенным представлением о цикле запроса-ответа FastAPI. Цикл запрос-ответ объясняет путь браузера, отправляющего запрос, и FastAPI, отправляющего ответ. На самом деле это очень популярный вопрос на собеседовании. Во время поиска работы мне задавали этот вопрос примерно в 90% случаев. «Объясните цикл запроса-ответа Django?». Это хороший шанс продемонстрировать, что вы знаете промежуточное программное обеспечение, его использование и дополнительные возможности! Ниже приведена демонстрация потока запросов.

Демонстрация потока запросов
Демонстрация потока запросов

Может случиться так, что вы не разбираетесь в схемах, маршрутизаторах и моделях, но не паникуйте. Разберемся в следующих постах. Я просто хотел довести до вашего сведения, что практически во всех веб-приложениях нам необходимо запрашивать данные из таблиц базы данных.
Итак, приступим к созданию таблиц базы данных. Убедитесь, что у вас есть такая структура папок. Создайте каталог моделей для хранения эквивалента класса таблиц БД. (Заранее прошу прощения, что прикрепляю фото, но иначе на дзене будет выглядеть очень не очень)

Структура проекта
Структура проекта

Давайте вмете введем весь следующий код в db > models > blog.py. Лично мое мнение таково, что это лучший способ запомнить материал. Я сам ленивый человек, поэтому сильно не бейте🫣

-3

Кстати, показываю за одно как можно импортировать сразу много сущностей (если кто не знал)😁

Хорошо, теперь давайте разберемся, что мы только что сделали и почему:

  • Помните, в предыдущем посте я рассказывал вам историю о том, что мы используем необработанные SQL-запросы, такие как "Select * from Blog". Он не будет работать со всеми базами данных. Потому что каждая база данных имеет свой набор протоколов/правил. например, в Postgres двойные кавычки не распознаются, и нам приходится использовать одинарные кавычки.
  • У нас есть базовый класс в base_class.py, и мы наследуем его, чтобы иметь представление таблиц на основе классов. Каждое свойство или атрибут этого класса преобразуется в столбец таблицы.
  • Столбец «title» представляет заголовок блога и может хранить строки. Его значение в таблице не может быть NULL.
  • Столбцы is_active будут использоваться для контроля того, будет ли сообщение блога видно на веб-сайте или нет.
  • Таблица блога будет иметь внешний ключ к таблице пользователей, и эти внешние ключи будут использоваться для определения того, кто является автором блога. Это будет использоваться для определения того, может ли человек обновлять/удалять сообщение в блоге или нет.

Теперь мы также введем код, чтобы создать таблицу пользователей, которая, очевидно, будет использоваться для хранения данных пользователей. Введите приведенный ниже код в db > models >users.py

Содержимое users.py
Содержимое users.py

Создавать сайт на питоне прикольно) Погоди, и все? Нет,  😅  у нас осталось еще несколько конфигураций. Давайте поместим импорт всех этих моделей в один файл с именем base.py. Будет удобно создавать все таблицы одновременно в нашем веб-приложении.

-5

Хорошо, теперь еще одно, последнее. Помните, что мы импортировали Base в файл main.py и создавали таблицы базы данных. Теперь мы будем импортировать  Base  не из base_class.py, а из base.py (если вы не сделали этого раньше). Итак, измените оператор импорта в main.py на:

-6

Хорошо, пора перезапустить сервер единорога. Теперь проверьте таблицы БД. Если вы используете SQLite, используйте инструмент  Downloads — DB Browser for SQLite (sqlitebrowser.org) . Ребята из Postgres обновите таблицы в PgAdmin Download (pgadmin.org) , и вы должны увидеть таблицы.
Однако, если вы выполните команду
alembic review --autogenerate -m «first migration»,  это создаст пустой файл миграции внутри alembic/versions. Это связано с тем, что при запуске сервера uvicorn создаются таблицы из-за строки Base.metadata.create_all(bind=engine). Итак, я бы предложил вам удалить пустой файл миграции с помощью пустого метода обновления и понижения версии. Убедитесь, что ваш каталог версий теперь пуст. На этом этапе выполните следующие 2 команды:

alembic revision --autogenerate -m "create user and blog table migrations"
alembic upgrade head

Alembic Revision создаст новый файл внутри alembic/versions/. На этот раз функции обновления и понижения версии должны иметь правильную логику. Когда вы выполняете обновление перегонного куба, все изменения будут внесены в базу данных.

🔥 Теперь вы можете запустить сервер uvicorn (^_^)

Фуух! Предлагаю сделать небольшой перерыв. Я пока пойду заварю чайку.

✅ В следующей статье мы c тобой познакомимся с Pydantic, узнаем что это за зверь и с чем его едят)

Читайте также: Часть 7 (Pydantic схемы)

.

❤️ Если вам понравилась статья, ставьте лайк и подписывайтесь на мой канал (Заходи в Ай-Ти).

👍 Если у вас остались вопросы или есть интересные темы, которые вы хотите, чтобы я разобрал, то пишите в комментариях. Ваше мнение очень важно для меня!

#fastapi python #питон обучение #python обучение #сайт на питоне #пайтон обучение