DEV Community

William Rodriguez
William Rodriguez

Posted on

Migraciones sin Alembic: Adición automática de columnas con TableSync

¿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())
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Autor: William Steve Rodríguez Villamizar (Wisrovi)

Top comments (0)