465 lines
10 KiB
Plaintext
Executable File
465 lines
10 KiB
Plaintext
Executable File
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%';
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|