Для выполнения проверки наличия записи в базе данных с использованием SQLalchemy вы можете использовать метод `first()` для запросов.
В вашем примере с FastAPI и AsyncSQLAlchemy вы можете выполнить проверку наличия записи следующим образом:
1. Импортируйте необходимые модули и создайте сессию SQLalchemy:
```python
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.future import select
...
engine = create_async_engine("your-database-url")
async_session = sessionmaker(bind=engine, class_=AsyncSession, expire_on_commit=False)
```
2. Создайте асинхронную функцию для выполнения проверки наличия записи:
```python
async def check_role_exists(role_name: str):
async with async_session() as session:
# Используйте select().where(...) для выполнения запроса к базе данных
statement = select(Role).where(Role.name == role_name)
result = await session.execute(statement)
role = result.scalar()
return role is not None
```
3. В вашем маршруте FastAPI вызывайте эту функцию для выполнения проверки:
```python
@app.post("/create_role")
async def create_role(role_name: str):
# Создайте новую роль
# ...
# Выполните проверку наличия записи
role_exists = await check_role_exists(role_name)
if role_exists:
return {"message": f"Роль с именем {role_name} уже существует"}
else:
return {"message": f"Роль {role_name} создана успешно"}
```
В этом примере функция `check_role_exists()` использует `select(Role).where(...)` для создания запроса к базе данных и проверяет возвращаемое значение `result.scalar()`. Если значение не равно `None`, то запись с указанным именем уже существует. В противном случае, запись не найдена.
Вы можете использовать этот подход для выполнения проверки наличия записи в базе данных.