Навигация по курсу:
Супер, на данный момент мы сделали очень много. Теперь пришло время быть настойчивыми. Мы собираемся подключить базу данных к fastapi. Я выбираю PostgreSQL. Возможно, вам потребуется загрузить Postgres и DBeaver / PgAdmin (для мониторинга Postgres). Если вы просто хотите играть и учиться на своем локальном компьютере, вы можете не загружать Postgres. Мы можем использовать SQLite . Это простая в использовании база данных на основе файловой системы, поддерживаемая Python.
- Меньше переключений контекста : мы пишем операторы Python, которые преобразуются в запросы к базе данных с помощью ORM.
- Переключение баз данных не требует внесения изменений в базу данных, достаточно лишь изменить объект подключения.
- Плюсы: миграции, пулы соединений и транзакции поддерживаются «из коробки».
- Оптимизирован для производительности: ORM знают, как оптимизировать наши запросы (большую часть времени!)
Хорошо, давайте добавим следующие строки в файл requirements.txt и запустим pip install -r requirements.txt
fastapi==0.95.1
uvicorn==0.22.0
SQLAlchemy==2.0.13
psycopg2==2.9.6
psycopg2-binary==2.9.6
python-dotenv==1.0.0
Теперь нам нужно добавить информацию в базе данных. Я предлагаю не хранить эту информацию в необработанном виде. Вместо этого я бы предложил хранить эту информацию в переменных среды. Чтобы упростить процесс создания переменных среды, мы воспользуемся python-dotenv. Давайте создадим новый файл с именем .env.
В файле «.env» мы собираемся хранить важную информацию для наших приложений, такую как ключи API, секретный ключ API и URL-адреса базы данных. Итак, давайте разместим эту информацию в файле .env:
POSTGRES_USER=nofoobar
POSTGRES_PASSWORD=supersecret
POSTGRES_SERVER=localhost
POSTGRES_PORT=5432
POSTGRES_DB=blogdb
Теперь я собираюсь изменить наш файл конфигурации, потому что мы не хотим напрямую взаимодействовать с файлом «.env», а вместо этого хотим разместить все конфигурации нашего проекта в одном конкретном месте. В нашем случае это файл config.py. Итак, давайте изменим файл config.py для чтения из файла .env, чтобы мы могли воспользоваться ими.
Ребята, я принял сложное для меня решение: я буду вствлять картинки вместо текста(дзен не поддерживает вставку кода), потому что иначе это выглядит ужасно. В этом есть свои плюсы. Переписывая код, вы лучше запомните содержимое. Кто хочет посмотреть код - добро пожаловать в мой гитхаб, там я выкладываю все свои проекты для вас❤️
Итак, продолжим... На чем мы остановились? А, точно на файле config.py:
Почти у цели, просто побудь со мной какое-то время. Это я делаю для того, чтобы сделать наш проект более удобным в сопровождении. За свой небольшой опыт я усвоил "Разработка программного обеспечения больше связана с обслуживанием, чем с разработкой".
Хорошо, теперь мы можем перейти к настройке базы данных, введите следующие строки в db > session.py
- Мы создаем механизм sqlalchemy с URL-адресом базы данных Postgres. Как говорилось ранее, вы также можете создать движок с помощью sqllite. просто раскомментируйте закомментированные строки и закомментируйте SQLALCHEMY_DATABASE_URL = settings.DATABASE_URL
engine = create_engine(SQLALCHEMY_DATABASE_URL) - Затем мы создаем SessionLocal. Как только мы создадим экземпляр класса SessionLocal , этот экземпляр станет фактическим сеансом базы данных. Помните об этом: позже мы создадим настоящий сеанс базы данных для каждого запроса.
Класс модели — это Pythonic-представление таблицы базы данных. Хорошо, теперь мы собираемся создать класс супердедушки (да-да, именно так 😅). Каждая модель будет наследовать этот базовый класс, и мы будем использовать этот базовый класс для создания всех таблиц базы данных. Кроме того, мы сохраним всю общую логику, связанную с таблицами, в этом «Базовом» классе. Например, все наши таблицы будут иметь поле id. Это будет использоваться для уникальной идентификации каждой строки/записи. Давайте создадим этот базовый класс в файле db > base_class.py.
Уже сделано много, но не хватает одной важной вещи. Думайте, думайте 😁
Наше приложение находится в файле main.py и понятия не имеет, что мы пишем в других файлах! Итак, мы должны указать нашему приложению создать для нас таблицы базы данных. Итак, добавьте следующий код в main.py
Если вы используете компьютер Linux/Mac, используйте приведенную ниже команду, чтобы создать базу данных и пользователя с необходимыми разрешениями.
Теперь, если вы используете Postgres, откройте PgAdmin и создайте новую базу данных, такую же, как та, которая указана вами в файле «.env». (yourdbname_eg_debug) и перезапустите сервер. Наша база данных и сервер теперь подключены друг к другу. Если мы используем SQLite, нам даже не нужно создавать базу данных вручную. Просто перезапустите сервер. Вот картинка моего подключения к базе данных Postgres с помощью PGAdmin.
Готово, теперь встретимся в следующем посте. Я все устал так много печатать. 😴
✅ В следующей части мы мы узанем что такое миграции и зачем они нужны.
Читайте также: Часть 5 (Alembic и миграции баз данных)
❤️ Если вам понравилась статья, ставьте лайк и подписывайтесь на мой канал (Заходи в Ай-Ти).
👍 Если у вас остались вопросы или есть интересные темы, которые вы хотите, чтобы я разобрал, то пишите в комментариях. Ваше мнение очень важно для меня!
#fastapi #fastapi python #fastapi docker #питон разработчик #backend python курс #обучение python бесплатно