DiaSQL generando esquema SQL apartir de un diagrama DIA

DiaSQL Dump es un plugin para el DIA que desarrolle en python bajo licencia GPLv3, que te permite crear un archivos en sintaxis SQL a partir de tu diagramas de base de datos.

Actualmente se encuentra en versión Beta pero ya es completamente funcional,  puedes obtener una copia y el código desde:

DiaSQL Dump nos ayuda a generar archivos con código SQL a partir de tus diagramas de base de datos desarrollados con la herramienta DIA, generando con esto una congruencia entre el modelado de tu base de datos con su definición en SQL, de esta forma si deseas generar algún cambio en el esquema de la base de datos basta con editar el diagrama.

Ejemplo

Previamente debes tener instalado el programa DIA, esto en ubuntu o debian linux lo puedes hacer con la siguiente instrucción.

sudo apt-get install -y dia

La siguiente figura muestra el diseño de un diagrama de base de datos en DIA.

ejemplo diagrama DIA definición de una tabla.

ejemplo diagrama DIA definición de una tabla.

De la figura se puede apreciar que la tabla Personas tiene las siguientes campos:

  • id: int(11), clave primaria, no puede ser nulo.
  • rfc: varchar(20), clave única, no puede ser nulo.
  • nombre: varchar(50), NO es clave, puede ser nulo.

Una ves que realizamos el diagrama nos vamos a archivo y del damos exportar seleccionamos al opción SQL Dump(*.sql) como se muestra en la siguiente imagen:

exportando volcado SQL del diagrama DIA

exportando volcado SQL del diagrama DIA

O bien desde linea de comando con la siguiente sentencia.

#h4x0r mode
dia  -e  ejemplo1.sql   ejemplo1.dia

Donde ejemplo1.dia es nuestro diagrama dia y ejemplos.sql es el archivo que queremos exportar(-e).

El cogido SQL generado por DiaSQL Dump para este ejemplo es:

-- Created by DiaSql-Dump Version 0.01(Beta)
-- Filename: ejemplo1.sql
-- Created: 2010-08-13

-- Personas --
CREATE TABLE IF NOT EXISTS `Personas` (
	`id` int(11) PRIMARY KEY NOT NULL UNIQUE AUTO_INCREMENT,
	`rfc` varchar(20) NOT NULL UNIQUE,
	`nombre` varchar(50)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- End SQL-Dump

Nota: esto es solo parte de la documentación que espero levantar próximamente.

primer Ejemplo en PyGTK

Vamos hacer la primera aplicación gráfica con python y GTK como lo mencionaba en el post pasado python hace uso de GTK para generar un entorno gráfico, un entorno de ventanas, botones, y demás recursos que GTK proporciona, veamos un ejemplo de esto para esto vamos ha realizar la siguiente aplicación:

Imagen - Ventana Generada con PyGTK

Imagen - Ventana Generada con PyGTK

Bueno pasemos al codigo para luego pasar a una explicacion sobre el mismo:

#!/usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk

class Table:
  1. funcion del boton de salida
def delete_event(self, widget, data=None): gtk.main_quit() return gtk.FALSE
  1. funcion para el boton de busqueda
def busqueda(self, widget, data=None): print "realizar busqueda"
  1. funcion para el boton de insertar
def insertar(self, widget, data=None): print "funcion insertar un nuevo producto" def __init__(self):
  1. Creando una nueva ventana y personalizandola(le ponemos titulo)
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_title("..::[Primer ejemplo en PyGTK]::..") self.window.set_border_width(20)
  1. eliminamos los eventos existentes
self.window.connect("delete_event", self.delete_event)
  1. creamos (luego agregamos) una tabla de 2x2 donde estaran los botones
table = gtk.Table(2, 2, gtk.TRUE) self.window.add(table)
  1. Creando el primer boton el cual usara la celda <superior,izq> de la tabla
button = gtk.Button("Busqueda") button.connect("clicked", self.busqueda ) table.attach(button, 0, 1, 0, 1) button.show()
  1. Creando el segundo boton el cual usara la celda <inferior,izq> de la tabla
button = gtk.Button("Salir") button.connect("clicked", self.delete_event) table.attach(button, 1, 2, 0, 2) button.show()
  1. Creando el segundo boton el cual usara en este caso:
  2. las celdas <superior,der> e <inferior,der> de la tabla
button = gtk.Button("Insertar") button.connect("clicked", self.insertar) table.attach(button, 0, 1, 1, 2) button.show() table.show() self.window.show() def main(): gtk.main() return 0 if __name__ == "__main__": Table() main()

Como podemos ver existen 3 funciones las cuales conectan los eventos, esta forma de conectar a los eventos con las funciones es algo analogo a el conceptos de handlers de java solo que para mi parecer python los maena de forma mas trasparentes tambien como se puede observar el manejo del LayOut es practico con el uso de tablas ya que un objeto en una tabla no esta atrapado al espacio de una sola celda como en este caso el boton de cerrar esta contenido en 2 celdas, por ultimo cabe mencionar que la primera linea es un comentario para el shell en este caso estamos diciendo que el interprete que ejecutara nuestro codigo se localiza en (/usr/bin/) esto es si lo queremos ejecutar desde linea de comandos en nuestro entorno linux o Mac con la siguiente instrucion(supongamos que el scrip se llama ejem01.py).

$chmod +x *.py

$./ejemp01.py

para ejecutarlo sobre windows

Introduccion a PyGTK

PyGTK 2.0 es un conjunto de módulos que componen una interfaz Python para GTK+ 2.0. En el resto de este documento cuando se menciona PyGTK se trata de la versión 2.0 o posterior de PyGTK, y en el caso de GTK+, también a su versión 2.0 y siguientes. El sitio web de referencia sobre PyGTK es www.pygtk.org.

GTK - Logotipo

GTK - Logotipo

GTK+ (GIMP Toolkit) es una librería que permite crear interfaces gráficas de usuario. Se distribuye bajo la licencia LGPL, por lo que posibilita el desarrollo de software abierto, software libre, e incluso software comercial no libre que use GTK sin necesidad de pagar licencias o derechos.