Utilería prototipo de administración de interacción Python - Base de Datos.-
A continuación se describe cada clase del proyecto y sus funciones dentro del mismo.-
Clase base para utilerías de conexión a motores de bases de datos.
La finalidad de esta clase es estandarizar los métodos de ejecución de comandos contra los diferentes motores de base de datos, un nivel por encima de DB-API, valiéndose de los métodos implementados por los mismos módulos externos existentes para cada motor, como mysql, sql server, oracle, sqlite, etc.-
Esta clase no debe ser utilizada directamente, debe ser implementada por otras, pues la idea es, en un futuro cercano, integrarla con otras clases y establecer un mejor control de las sesiones de datos.-
Clase base para modelo de tablas de bases de datos.
Esta clase esta "inspirada" en los Entities de EJB en Java y el patrón Value Object, la idea es que sea un lugar centralizado donde definir la estructura de la representación de clase de una tabla e instancias de datos contenidos en sus registros.-
Clase para generación de criterios de Restricción de resultados.
Esta clase permite abstraer la generación de filtros "where" de una sentencia sql a partir de simples métodos que hacen refencia al tipo de restricción a establecer.-
Clase para generación de sentencias con intersección de tablas.
Esta clase permite generar los comandos de vinculación entre tablas, es decir, los segmentos "join" y las relaciones entre las tablas, éstas deben establecerse por medio de instancias de la clase Restriccion.
En caso que se desee establecer una relación de "producto cartesiano" o "cross join", la restricción se debe proveer por una comparación de valores simple y de "relleno".-
Ej.
emp = Employee(cAlias = '_emp_')
emp.unir(Union(_dep_ = DepEmp
, cTipo = Union.NORMAL
, oRestriccion = Restriccion.Ig('1', '1')
)
)
Lo que generará la siguiente cláusula:
SELECT _emp_.emp_no, ... FROM employees AS _emp_ JOIN dept_emp AS _dep_ ON 1 = 1
Para esta versión inicial, sólo se soportan las siguientes características:
-
OTDBase
Relación de atributos de clase - campos de tabla por medio de un diccionario escrito manualmente.- No se administran más datos que los nombres de cada campo, más adelante veré de incluir una clase que permita manejar atributos como tipo, si acepta NULL, etc.-
-
Restricción
Se incluyen la mayoría de los comandos más comunmente requeridos en una sentencia SQL.-
-
Union
Soporte para la generación de uniones entre tablas.-
Sólo tipos JOIN, LEFT OUTER JOIN y RIGHT OUTHER JOIN, implementados y probados.
Evaluando si es mejor un método por tipo o implementar un método único especificando el tipo por medio de constantes.-
-
Relación entre clases
Soporte para relación entre clases que representan tablas relacionadas. Esto se logra por medio de decoradores de métodos y propiedades (property). Además de un método de la clase ConexionBase.-
Se incluyen un par de proyectos de ejemplos, dónde se muestra el uso de cada clase por medio de una conexión a una base de datos MySQL.-