API & Backend

SQLAlchemy 2.0 Async Session ve Alembic ile Sıfır Kesintili Veritabanı Migrasyonu

SQLAlchemy 2.0'ın modern select() sözdizimi, AsyncEngine bağlantı havuzu yönetimi ve Alembic ile otomatik şema migrasyonu rehberi.

3 dk

SQLAlchemy 2.0 Async Sözdizimi

`async_sessionmaker` ve `asyncpg` sürücüsü kullanarak sorguları bloklanmadan çalıştırma:

db.py
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine, async_sessionmaker

engine = create_async_engine("postgresql+asyncpg://user:pass@localhost/app_db", pool_size=20)
AsyncSessionFactory = async_sessionmaker(engine, expire_on_commit=False)

async def get_user_by_email(session: AsyncSession, email: str):
    stmt = select(User).where(User.email == email)
    result = await session.execute(stmt)
    return result.scalar_one_or_none()