Привет! Сегодня я хочу поделиться с вами своим опытом написания приложения на FastAPI с использованием асинхронности и подключения к базе данных Postgres. Я самостоятельно прошел все этапы создания и настройки приложения и с удовольствием поделюсь с вами подробными инструкциями и кодом. Давайте начнем!Шаг 1⁚ Установка FastAPI и зависимостей
Первым делом, нам необходимо установить FastAPI и все нужные зависимости. Откройте командную строку и выполните следующую команду⁚
python
pip install fastapi[all]
Шаг 2⁚ Создание файла main.py
Теперь создайте файл с названием main.py и откройте его в вашей любимой IDE. В этом файле мы будем описывать наши эндпоинты и их функционал.Шаг 3⁚ Настройка подключения к базе данных
Перед тем, как перейти к написанию эндпоинтов, нам необходимо настроить подключение к базе данных Postgres. Для этого нам понадобятся следующие зависимости⁚ psycopg2 (для работы с Postgres) и databases (для асинхронного взаимодействия с БД). Выполните следующую команду⁚
python
pip install psycopg2 databases
После установки зависимостей добавьте следующий код в ваш файл main.py⁚
python
import databases
import sqlalchemy
DATABASE_URL ″postgresql://user:password@localhost/db_name»
database databases.Database(DATABASE_URL)
metadata sqlalchemy.MetaData
# Создание таблицы для пользователя
users sqlalchemy.Table(
″users″,
metadata,
sqlalchemy.Column(″id″, sqlalchemy.String, primary_keyTrue),
sqlalchemy.Column(″name″, sqlalchemy.String),
sqlalchemy.Column(″email″, sqlalchemy.String),
)
# Создание подключения к БД
engine sqlalchemy;create_engine(DATABASE_URL)
metadata.create_all(engine)
Замените данные в DATABASE_URL на ваши реальные данные для подключения к базе данных.Шаг 4⁚ Написание эндпоинтов для пользователя
Теперь приступим к написанию эндпоинтов для создания, изменения, чтения и удаления пользователя.python
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import List
app FastAPI
class User(BaseModel)⁚
id⁚ str
name⁚ str
email⁚ str
# Создать пользователя
@app.post(″/users/», response_modelUser)
async def create_user(user⁚ User)⁚
query users.insert.values(
iduser.id,
nameuser.name,
emailuser.email,
)
await database.execute(query)
return user
# Получить список пользователей
@app.get(″/users/», response_modelList[User])
async def get_users⁚
query users.select
return await database.fetch_all(query)
# Получить пользователя по id
@app.get(″/users/{user_id}», response_modelUser)
async def get_user(user_id⁚ str)⁚
query users.select.where(users.c.id user_id)
user await database.fetch_one(query)
if not user⁚
raise HTTPException(status_code404, detail″User not found″)
return user
# Изменить пользователя по id
@app.put(″/users/{user_id}», response_modelUser)
async def update_user(user_id⁚ str, user⁚ User)⁚
query users.update.where(users.c.id user_id).values(
nameuser.name,
emailuser.email,
)
await database.execute(query)
return user
# Удалить пользователя по id
@app.delete(″/users/{user_id}»)
async def delete_user(user_id⁚ str)⁚
query users.delete.where(users.c.id user_id)
await database.execute(query)
return {″message″⁚ ″User deleted successfully″}
Шаг 5⁚ Запуск приложения
Теперь мы можем запустить наше приложение и потестировать его эндпоинты. Для этого выполните следующую команду в командной строке⁚
python
uvicorn main⁚app —reload
После этого вы сможете открыть документацию FastAPI в браузере по адресу http://localhost:8000/docs и увидеть все описанные эндпоинты.
Вот и все! Теперь у вас есть полноценное приложение на FastAPI с эндпоинтами для создания, изменения, чтения и удаления пользователя. Я надеюсь, что эта пошаговая инструкция была полезной и поможет вам в разработке своих проектов. Успехов в программировании!