Uso del ORM de Django en tus programas CUI/GUI

  • por javier
  • 21 de Marzo de 2023

Señores, SQL, en mi opinión, ha muerto. O a lo sumo, queda como capa subyacente de los muchos sistemas de Mapeo Objeto-Relacionales. Es obvio que el modelado de la base de datos, desde el punto de vista de Análisis, sigue siendo similar, pero desde el punto de vista del desarrollador, --de un tiempo a esta parte--, nos encontramos con que todos los Frameworks que se precien y utilicen Sistemas Gestores de Bases de Datos Relacionales o Híbridos incluso, en la capa Modelo, (Ver modelo de 3 capas), utilizan ORM (Mapeo Objeto-Relacional) como nuevo interfaz dentro del lenguaje de programación y/o Framework elegido. 

 
 
¿Qué ventajas tiene esto? 
- El proceso de desarrollo se simplifica bastante, pues con el hecho de manejar clases u objetos, realizamos las mismas tareas de una forma mas eficiente.
- Tenemos abstracción con respecto a los SGBD utilizados. Esto es, podemos cambiar de MySQL a Postgres o SQLite en cuestión de segundos, modificando la configuración.
- Si necesitamos realizar o programar tareas a mas bajo nivel, ya sean procedimientos almacenados, triggers, etc... También podemos hacerlo y nos beneficiaremos de ambas tecnologías.
- La velocidad de ejecución, viene a ser prácticamente similar en nuestro SGBD.
 
 
Si quieres ampliar detalles, pulsa aquí https://es.wikipedia.org/wiki/Mapeo_objeto-relacional
 
Como usuario de Django y al poseer cierta familiaridad con su ORM,  me vi tentado a sacarle provecho en programas de consola o bien de cliente pesado o gui. El proceso de integración del ORM de Django, pasa por crear un proyecto standard de Django y alguna aplicación, de las que solo utilizaremos sus models.py (modelos o definición de la base de datos), aunque estaremos obligados a incluir dichas aplicaciones, de todos modos en el fichero de configuración (settings.py).
Luego crearemos nuestro script en python, en el que podríamos utilizar curses o Qt o bien consola pura y dura, pero tendremos que incluir este código al comienzo del script:
 
import os, sys
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
sys.path.append(BASE_DIR+"/db/")      # En mi caso, el proyecto Django se llama "db"
os.environ['DJANGO_SETTINGS_MODULE']="db.settings"
 
La definición de models.py viene a ser similar a la de un proyecto Django standard.
Los comandos de creación del proyecto son: (en mi caso)
 
 
$ django-admin startproject db
$ cd db
$ python manage.py startapp main  # aqui definimos nuestras tablas
$ python manage.py syncdb         # Creamos las tablas de la base de datos previamente configurada en settings.py
 
Nuestro script lo incluimos en el directorio del proyecto y deberemos ejecutarlo desde ahí.
Si quereis profundizar más en el tema, tendreis que generar vuestro propio código basado en éste, ya que en éste artículo, no suministro el acostumbrado proyecto de pruebas.
 

 

Gracias por la lectura. Si teneis alguna duda que me sea posible solucionar y que tenga que ver con el artículo, dejadme un comentario. Prometo contestar.
blog comments powered by Disqus

Detecta dispositivos USB no autorizados en Linux (Extensible Python Snippet)

  • por javier
  • 21 de Marzo de 2023

La proliferación de dispositivos USB maliciosos, para hacerse con el control de nuestra máquina están a la orden del día.

Los hay muy variados y de diferente funcionalidad, y permiten un amplio rango de posibilidades a la hora de hackear nuestra máquina.

Contra esto, hay varias soluciones, como USBGuard, que no funciona bien en distros estables por problema de dependencias.

También hay otras soluciones como USB Canary que permite twittear y enviar sms con Twilio para avisarnos de dichos ataques.

No obstante, me he permitido el lujo de crear un snippet algo más abierto y sencillo para que modifiqueis a vuestro antojo y en base a vuestras necesidades.

Se me ocurre integrarlo con OSSEC, por ejemplo, con una regla e incorporarlo vuestro sistema de alertas..

ALGORITMOS GENETICOS. PROBLEMA DE LAS 8 REINAS EN PYTHON

  • por javier
  • 22 de Marzo de 2023
None

La idea de Algoritmos Genéticos, se basa en la teoría de la evolución de las especies, de Charles Darwin (1859). La idea principal es que las variaciones o mutaciones, ocurren en la reproducción y serán conservadas en base a la idoneidad reproductiva.

Los Algoritmos Genéticos se basan en la búsqueda paralela de soluciones, hasta dar con una suficientemente válida o se aborta el programa si no se encuentra dicha solución y el tiempo transcurrido de cómputo no es aceptable.

Inicialmente se genera una población (soluciones posibles en un array), que van regenerándose en base a un cruce de 2 individuos (cadenas de genes o ADN) de dicha población, sucesivamente y aleatoriamente, se mutan genes del individuo en cuestión.

Update cookies preferences