El proyecto¶
Qué crea tai-sql init¶
mi_proyecto/
├── .taisqlproject # nombre del proyecto y schema por defecto
├── pyproject.toml # dependencias del CLIENTE GENERADO
├── README.md
├── __init__.py
├── schemas/
│ └── public.py
├── views/
│ └── public/
└── diagrams/
El .taisqlproject es un JSON minúsculo, y es lo que marca la raíz del proyecto:
Opción de init |
Qué hace |
|---|---|
-n, --name |
Nombre del proyecto (y del directorio). |
-s, --schema |
Nombre del primer schema. |
--install / --no-install |
Instalar las dependencias al terminar, o no. |
Dónde se resuelven las rutas¶
Los comandos buscan el .taisqlproject hacia arriba desde donde los ejecutas, y de ahí
salen schemas/ y views/.
Los output_dir son relativos al directorio desde el que ejecutas el comando
No al .taisqlproject. Con output_dir='database', el cliente del schema public acaba en
database/public/ si ejecutas desde la raíz del proyecto, que es lo que debes hacer.
Varios schemas en un proyecto¶
Un proyecto puede tener varios ficheros en schemas/, cada uno con su datasource(), sus
generadores y —si hace falta— su propia base de datos.
tai-sql new-schema ventas # crea schemas/ventas.py y views/ventas/
tai-sql set-default-schema ventas # el que usarán los comandos sin --schema
tai-sql push -s ventas # actuar sobre uno concreto
tai-sql info # ver cuáles hay y cuál es el default
Salida típica de tai-sql info:
📁 Información del proyecto:
Nombre: mi_proyecto
Directorio: /home/ana/mi_proyecto
Schema por defecto: public
📄 Schemas disponibles:
• auth
• public (✅ default, 📌 current)
• ventas
Cada schema genera su propio paquete de cliente y se sincroniza por separado: un push sobre
uno no toca los objetos del otro. Las relaciones entre schemas distintos no se declaran: son
dos bases de datos lógicas separadas.
Qué versionar en git¶
| Va al repositorio | No va |
|---|---|
schemas/*.py — la fuente de verdad |
El output_dir del cliente generado1 |
views/**/*.sql |
Los diagramas generados |
.taisqlproject, pyproject.toml |
El .env con las credenciales |
El schema se commitea, así que nunca escribas una contraseña en él: para eso está env().
-
Es una decisión de equipo. Versionarlo hace que un
pip installdel proyecto traiga el cliente sin necesidad de tai-sql; no versionarlo evita diffs enormes en cadapush. Si lo versionas, que sea siempre el resultado detai-sql generate, nunca editado a mano. ↩