¿Por qué añadir un campo opcional a un modelo Pydantic debería obligarte a generar y correr una migración de Alembic? TableSync de wsqlite añade columnas faltantes de forma automática.
Así se implementa TableSync & Zero-Downtime Column Addition en entornos reales con wsqlite:
from typing import Optional
from pydantic import BaseModel
from wsqlite import WSQLite
# Initial Model
class UserV1(BaseModel):
id: int
name: str
db = WSQLite(UserV1, "app.db")
db.insert(UserV1(id=1, name="Alice"))
# Later: Add a new column to the model
class UserV2(BaseModel):
id: int
name: str
email: Optional[str] = None # New column!
# Re-initializing instantly executes ALTER TABLE ADD COLUMN
db2 = WSQLite(UserV2, "app.db")
db2.insert(UserV2(id=2, name="Bob", email="bob@example.com"))
print(db2.get_all())
Por qué wsqlite marca la diferencia:
- Define tablas de base de datos usando modelos Pydantic v2 estándar.
- Sincroniza columnas automáticamente al iniciar sin migraciones manuales.
- Connection pool seguro multihilo con modo WAL por defecto (+5.000 inserts/seg).
- Soporte completo síncrono y asíncrono con async/await.
Instalación y Recursos
pip install wsqlite
Autor: William Steve Rodríguez Villamizar (Wisrovi)
Top comments (0)