navbar_vertical_CRUD/ ├── app.py ├── nexus.db └── templates/ ├── base.html ├── index.html ├── explorar.html ├── contacto.html └── campus/ ← esta carpeta debe existir aquí ├── list.html └── form.html pip install -r requirements.txt python app.py # → http://127.0.0.1:5000 PRODUCCION LINUX GUNICORN pip install gunicorn gunicorn app:app gunicorn --bind 0.0.0.0:8000 app:app gunicorn --workers 4 --bind 0.0.0.0:8000 app:app gunicorn --workers 4 --bind 0.0.0.0:8000 --timeout 120 app:app PRODUCCION WINDOWS WAITRESS pip install waitress waitress-serve --host=0.0.0.0 --port=8000 app:app para Gunicorn ps aux | grep gunicorn averigua el proceso que lo usa kill 1337144 la primera de la lista pkill -f "gunicorn.*app:app lo elimina de una sola vez --------------------------------------------------------------- TABLAS CREATE TABLE "vehiculos" ( "id" INTEGER, "m_oficial" TEXT, "m_civil" TEXT, "m_propia" TEXT, "VIN" TEXT, "poliza" TEXT, "viat" TEXT, "legajo" TEXT, "marca" TEXT, "modelo" TEXT, "tipo" TEXT, "denominacion" TEXT, "color" REAL, "cilindrada" TEXT, "potencia" TEXT, "combustible" TEXT, "neumaticos" TEXT, "plazas" TEXT, "lanzadestellos" INTEGER, "situacion" TEXT, "poblacion" TEXT, "unidad" TEXT, "grupo" TEXT, "int_operacion" TEXT, "int_grupo" TEXT, "int_juzgado" TEXT, "int_procedimiento" INTEGER, "f_destino_situacion" INTEGER, "f_alta" TEXT, "f_baja" INTEGER, "km" TEXT, "km_1" TEXT, "itv_ultima" INTEGER, "itv" INTEGER, "observaciones" TEXT, "historial" TEXT, "notas" TEXT, PRIMARY KEY("id" AUTOINCREMENT) ) ----------------------------------------- Cambiar None por Null table vehiculos UPDATE vehiculos SET m_oficial = NULLIF(m_oficial, 'None'), m_civil = NULLIF(m_civil, 'None'), m_propia = NULLIF(m_propia, 'None'), VIN = NULLIF(VIN, 'None'), poliza = NULLIF(poliza, 'None'), viat = NULLIF(viat, 'None'), legajo = NULLIF(legajo, 'None'), marca = NULLIF(marca, 'None'), modelo = NULLIF(modelo, 'None'), tipo = NULLIF(tipo, 'None'), denominacion = NULLIF(denominacion, 'None'), cilindrada = NULLIF(cilindrada, 'None'), potencia = NULLIF(potencia, 'None'), combustible = NULLIF(combustible, 'None'), neumaticos = NULLIF(neumaticos, 'None'), plazas = NULLIF(plazas, 'None'), situacion = NULLIF(situacion, 'None'), poblacion = NULLIF(poblacion, 'None'), unidad = NULLIF(unidad, 'None'), grupo = NULLIF(grupo, 'None'), int_operacion = NULLIF(int_operacion, 'None'), int_grupo = NULLIF(int_grupo, 'None'), int_juzgado = NULLIF(int_juzgado, 'None'), f_alta = NULLIF(f_alta, 'None'), observaciones = NULLIF(observaciones, 'None'), historial = NULLIF(historial, 'None'), notas = NULLIF(notas, 'None'); UPDATE vehiculos SET m_oficial = REPLACE(m_oficial, 'None', ''), m_civil = REPLACE(m_civil, 'None', ''), m_propia = REPLACE(m_propia, 'None', ''), VIN = REPLACE(VIN, 'None', ''), poliza = REPLACE(poliza, 'None', ''), viat = REPLACE(viat, 'None', ''), legajo = REPLACE(legajo, 'None', ''), marca = REPLACE(marca, 'None', ''), modelo = REPLACE(modelo, 'None', ''), tipo = REPLACE(tipo, 'None', ''), denominacion = REPLACE(denominacion, 'None', ''), cilindrada = REPLACE(cilindrada, 'None', ''), potencia = REPLACE(potencia, 'None', ''), combustible = REPLACE(combustible, 'None', ''), neumaticos = REPLACE(neumaticos, 'None', ''), plazas = REPLACE(plazas, 'None', ''), situacion = REPLACE(situacion, 'None', ''), poblacion = REPLACE(poblacion, 'None', ''), unidad = REPLACE(unidad, 'None', ''), grupo = REPLACE(grupo, 'None', ''), int_operacion = REPLACE(int_operacion, 'None', ''), int_grupo = REPLACE(int_grupo, 'None', ''), int_juzgado = REPLACE(int_juzgado, 'None', ''), f_alta = REPLACE(f_alta, 'None', ''), observaciones = REPLACE(observaciones, 'None', ''), historial = REPLACE(historial, 'None', ''), notas = REPLACE(notas, 'None', ''); ---------------- CREATE TABLE categorias ( id INTEGER PRIMARY KEY AUTOINCREMENT, tipo TEXT NOT NULL UNIQUE ) CREATE TABLE "historial" ( "id" INTEGER, "matricula" TEXT, "unidad" TEXT, "fecha" TEXT, "observaciones" TEXT, PRIMARY KEY("id" AUTOINCREMENT) ) CREATE TABLE "unidades" ( "unidad" TEXT ) ---------------------------------------- CONSULTAR TIPOS DE VEHICULO SELECT DISTINCT tipo FROM vehiculo ORDER BY tipo; Actualizar campo matrícula UPDATE clientes SET codigo = 'ABC' || codigo; Si solo quieres hacerlo en los registros que todavía no empiezan por ABC: UPDATE clientes SET codigo = 'ABC' || codigo WHERE codigo NOT LIKE 'ABC%'; Eliminar todos los guiones de un campo SQLite dispone de la función REPLACE(). UPDATE clientes SET codigo = REPLACE(codigo, '-', ''); También puedes combinar ambas operaciones Si quieres quitar los guiones y luego añadir ABC: UPDATE clientes SET codigo = 'ABC' || REPLACE(codigo, '-', ''); --------------------------------------- CAMPOS BUSQUEDA VEHICULOS m_oficial m_civil ppm VIN Marca Modelo Tipo Población Departamento --------------------------------------- Consulta cambiar nombre a un campo ALTER TABLE nombre_tabla RENAME COLUMN nombre_antiguo TO nombre_nuevo; Consulta sql unir campos observaciones e historial en nuevo campo notas. ALTER TABLE vehiculos ADD COLUMN notas TEXT; UPDATE vehiculos SET notas = TRIM(COALESCE(observaciones, '') || ' ' || COALESCE(historial, '')); Consulta eliminar un campo (ejemplo img) ALTER TABLE nombre_tabla DROP COLUMN nombre_campo; ALTER TABLE vehiculos DROP COLUMN img; (No se pueden eliminar dos o mas columnas a la vez) Consulta eliminar guiones o puntos UPDATE nombre_tabla SET nombre_campo = REPLACE(nombre_campo, '.', ''); UPDATE nombre_tabla SET nombre_campo = REPLACE(nombre_campo, '-', ''); UPDATE vehiculos SET m_oficial = REPLACE(departamento, '.', ''); UPDATE vehiculos SET departamento = REPLACE(departamento, '.', ''); De este modo solo se modificarán las filas cuyo campo contenga al menos un punto. UPDATE vehiculos SET matricula = REPLACE(matricula, '.', '') WHERE matricula LIKE '%.%'; Actualización multiple UPDATE vehiculos SET matricula = REPLACE(matricula, '.', ''), bastidor = REPLACE(bastidor, '.', ''), motor = REPLACE(motor, '.', ''); También puedes aplicar operaciones diferentes a cada campo: UPDATE vehiculos SET matricula = REPLACE(matricula, '.', ''), notas = TRIM(COALESCE(observaciones, '') || ' ' || COALESCE(historial, '')), f_alta = '2025-01-01'; Y si solo quieres actualizar determinadas filas, añade una cláusula WHERE: UPDATE vehiculos SET matricula = REPLACE(matricula, '.', ''), bastidor = REPLACE(bastidor, '.', '') WHERE id = 10; ACTUALIZACION CON CRITERIOS Comprobar antes: SELECT * FROM vehiculos WHERE departamento = 'Seg Ciudadana' AND poblacion = 'VELEZ'; Ejecutar update: UPDATE vehiculos SET departamento = 'SC' WHERE departamento = 'Seg Ciudadana' AND poblacion = 'VELEZ'; CREATE TABLE "historial" ( "id" INTEGER, "vehiculo_id" INTEGER, "fecha" TEXT, "matricula" TEXT, "situacion" TEXT, "poblacion" TEXT, "unidad" TEXT, "grupo" TEXT, "observaciones" TEXT, PRIMARY KEY("id" AUTOINCREMENT), FOREIGN KEY("vehiculo_id") REFERENCES "vehiculos"("id") ) PRAGMA foreign_keys = OFF; BEGIN TRANSACTION; CREATE TABLE revisiones_nueva ( id INTEGER PRIMARY KEY, vehiculo_id INTEGER NOT NULL, fecha DATE, observaciones TEXT, FOREIGN KEY (vehiculo_id) REFERENCES vehiculos(id) ON UPDATE CASCADE ON DELETE CASCADE ); INSERT INTO revisiones_nueva (id, vehiculo_id, fecha, observaciones) SELECT id, vehiculo_id, fecha, observaciones FROM revisiones; DROP TABLE revisiones; ALTER TABLE revisiones_nueva RENAME TO revisiones; COMMIT; PRAGMA foreign_keys = ON; ————————————— UPDATE historial SET vehiculo_id = ( SELECT id FROM vehiculos WHERE vehiculos.m_oficial = historial.matricula ); ——————————————— SOBRE LA TABLA HISTÓRIAL UPDATE historial SET poblacion_id = ‘1', unidad = TRIM(REPLACE(unidad, 'MALAGA', '')) WHERE unidad LIKE '%MALAGA%'; UPDATE unidades SET unidad = TRIM(REPLACE(unidad, 'MALAGA-', '')) WHERE unidad LIKE '%MALAGA%';