Files
2026-09-11 23:30:29 +02:00

465 lines
10 KiB
Plaintext
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
Adminer acceso
http://10.76.243.137:5001/
System: SQLite 3
Username: <empty>
Password: p4ssw0rd
Database: /db/pyfleet.db
pip install -r requirements.txt
python app.py
# → http://127.0.0.1:5000
gunicorn -w 2 -b 0.0.0.0:5000 app:app
Ejecutar con Python en segundo plano
nohup python app.py > flask.log 2>&1 &
Comprobar que esta activo
ps aux | grep python
Para detenerlo
pkill -f "Python app.py"
Gunicorn en segundo plano.
gunicorn -w 4 -b 0.0.0.0:5000 app:app > gunicorn.log 2>&1 &
nohup gunicorn -w 4 -b 127.0.0.1:5000 app:app > gunicorn.log 2>&1 &
Parar
ps aux | grep gunicorn (averiguar proceso)
pkill -f gunicorn. (nombre proceso)
kill 12345. (Numero proceso)
PRODUCCION LINUX GUNICORN
pip install gunicorn
gunicorn app:app
gunicorn -w 2 -b 0.0.0.0:5000 app:app
gunicorn --bind 0.0.0.0:5000 app:app
gunicorn -w 4 -b 127.0.0.1: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_reservada" TEXT,
"m_propia" TEXT,
"VIN" TEXT,
"poliza" TEXT,
"viat" TEXT,
"legajo" TEXT,
"marca" TEXT,
"modelo" TEXT,
"tipo" TEXT,
"denominacion" TEXT,
"color" REAL,
"combustible" 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, pdf TEXT,
PRIMARY KEY("id" AUTOINCREMENT)
)
CREATE TABLE documentos (
id INTEGER PRIMARY KEY AUTOINCREMENT,
vehiculo_id INTEGER NOT NULL REFERENCES vehiculos(id) ON DELETE CASCADE,
nombre TEXT,
filename TEXT NOT NULL,
fecha DATETIME DEFAULT (datetime('now','localtime'))
)
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")
)
CREATE TABLE mensajes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
texto TEXT NOT NULL,
autor TEXT,
fecha DATETIME DEFAULT (datetime('now','localtime'))
)
-----------------------------------------
Cambiar nombre de columna
ALTER TABLE nombre_tabla
RENAME COLUMN nombre_actual TO nombre_nuevo;
Eliminar columna (hay que hacerlo de una en una (SQLite no permite varias a la vez)
ALTER TABLE usuarios
DROP COLUMN nombre;
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
)
Actualización vial
UPDATE vehiculos
SET viat = substr(
notas,
instr(lower(notas), 'viat '),
24
)
WHERE instr(lower(notas), 'viat ') > 0;
----------------------------------------
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%';