postgresql_sqlalchemy_async
SKILL.md
postgresql_sqlalchemy_async
SQLAlchemy 2.0 en modo async es el ORM principal para todas las operaciones de base de datos. Se integra nativamente con FastAPI y asyncio, garantizando que las escrituras de auditoría no bloquean el pipeline KYC.
When to use
Usar para todas las operaciones CRUD sobre PostgreSQL: insertar sesiones de auditoría, consultar listas negras, registrar decisiones, gestionar la cola de revisión manual.
Instructions
- Instalar:
pip install sqlalchemy[asyncio] asyncpg alembic - Configurar engine async en
backend/db/engine.py:from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession from sqlalchemy.orm import sessionmaker engine = create_async_engine("postgresql+asyncpg://user:pass@pgbouncer:5432/kyc", pool_size=20) AsyncSessionLocal = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False) - Definir modelos en
backend/db/models/:AuditSession: session_id, user_id_hash, decision, global_score, agent_scores (JSONB), integrity_hash, created_at.BlacklistedDocument: doc_number_hash, doc_type, country, reason, created_at.ManualReviewQueue: session_id, reason, status, assigned_to, created_at.
- Inyectar sesión DB en FastAPI via dependency:
async with AsyncSessionLocal() as session. - Usar
session.add()+await session.commit()— nunca commits síncronos. - Gestionar migraciones con Alembic:
alembic upgrade headen el init del contenedor. - Conectar siempre a través de PgBouncer (puerto 5432) — nunca directo al puerto 5433 de PostgreSQL.
Notes
expire_on_commit=Falsees obligatorio en async para evitar lazy loading tras el commit.- Los INSERTs de auditoría deben ser fire-and-forget: usar
asyncio.create_task()para no bloquear la respuesta al cliente. - Nunca almacenar embeddings faciales en PostgreSQL — usar MinIO con TTL corto.
Weekly Installs
1
Repository
davidcastagnetoa/skillsFirst Seen
10 days ago
Installed on
mcpjam1
claude-code1
replit1
junie1
windsurf1
zencoder1