PYTHON & SQLite

AQUI EN ESTA SECCION APRENDEREMOS A CREAR UN FORM CON MAS ELEMENTOS Y ADEMAS USAREMOS SQLite CON EL FORM CREADO

En esta sección continuaremos con el uso del maravilloso lenguaje de programación Python el cual como ya sabemos esta instalado de manera predetermina en Fedora 25. Para tener una facilidad en el código vamos a instalar un editor de texto, y por consiguiente un creador de interfaces gráficas los cuales serán acopladas a nuestro programa.

¡¡Instalación de las herramientas usar!!

Primero iniciaremos a instalar un editor de texto llamado Atom, el cual es totalmente compatible con linux - Fedora 25.

Deben ingresar a la pagina oficial de Atom:

Claro que debemos descargar la version .rpm como se muestra en la imagen.

Tambien pueden acceder a la descarga de manera directa con el siguiente link:

Una vez completada la descarga solo ejecutamos el instalador.

Y bueno así de simple ya tenemos completa la instalación de Atom, solo nos falta agregar unas lineas de código para la prueba correspondiente.

En realidad este editor de texto, es muy interesante por la simple manera de manejar al Script.

Ahora vamos a instalar Glade que es una aplicación que nos ayudara con las interfaces gráficas de python, que como se había comentado en un inicio se acoplara a nuestro Script Python.

En realidad si es un programador experimentado con Python, puede diseñar la interfaz grafica con Script, que GTK te proporciona, como lo habiamos hecho en el post anterior GTK & Python.

Solo con darle clic en Instalar ya estara listo.

Ahora si arrancamos con Python!!!

Primero abriremos una terminal y realizaremos la verificación de la existencia de Python en nuestra maquina:

$python3

Verificación de los siguientes paquetes:

>>> import gi
>>> import sqlite3

Vemos que esta ok, ahora una prueba de Python, imprimiendo un mensaje

>>> print("hola mundo, iniciando con python")

Bien ahora crearemos nuestro espacio de trabajo, crearemos una carpeta llamada "developer"

$ mkdir developer

Por consiguiente abriremos Atom y crearemos un archivo prueba.py y lo guardaremos en la carpeta creada anteriormente.

El el archivo prueba.py agregamos la siguente linea de codigo:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
class MyWindow(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self, title="Hello World")
        self.button = Gtk.Button(label="Click Here")
        self.button.connect("clicked", self.on_button_clicked)
        self.add(self.button)

    def on_button_clicked(self, widget):
        print("Hello World")

win = MyWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()

Ahora para ejecutar nuestro código, escribimos la siguiente linea:

$ python3 prueba.py

El resultado sera una pequeña ventana con un botón, el cual cada vez que sea cliqueado se imprimirá un mensaje "Hello World"

!!Creando una pequeño programa!!

Ahora abriremos Glade, crearemos un nuevo espacio de trabajo. Aquí vamos insertar una Ventana, label's, textbox's, etc.

Luego guardaremos nuestro proyecto de Glade con el nombre de InputInformacion, en la carpeta developer que anteriormente habíamos creado.

Ahora vamos con el simple script de python.

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

def Rboton(button):
    text1 = box1.get_text()
    text2 = box2.get_text()
    text3 = box3.get_text()
    text4 = box4.get_text()
    text5 = box5.get_text()
    resultado = text1+text2
    lblresult.set_text("DATOS INGRESADOS\n"+"- Nombres: "+text1+"\n"+"- Apellidos: "+text2+"\n"+"- Carrera: "+text3+"- Edad: "+text4+"\n"+"- Hobby: "+text5)

builder = Gtk.Builder()
builder.add_from_file("InputInformacion.glade")
handlers = {
    "clicboton":Rboton
}

builder.connect_signals(handlers)
window = builder.get_object("window1")
box1 = builder.get_object("boxnombres")
box2 = builder.get_object("boxapellidos")
box3 = builder.get_object("boxcarrera")
box4 = builder.get_object("boxedad")
box5 = builder.get_object("boxhobby")
lblresult = builder.get_object("lblresultado")
window.show_all()
Gtk.main()

Ahora solo para ejecutar el programa usamos la siguiente sentencia:

$ python3 prueba.py

Bueno claro que este simple forma no tiene nada de complejidad ya que solo era cuestion de invocar a cada elemento del form, desde el editor de texto.

Lo simple que realiza es que recoge los textos de cada textBox y lo imprime en un label, en forma de parrafo.

!!#Recordando Python...!! Es hermoso sacar provecho al tiempo, aprendiendo algo chevere, bueno, divertido e interesante.

EN EL EJEMPLO ANTERIOR SOLO CREAMOS UN FORM SIMPLE QUE SOLO IMPRIMÍA TEXTO PLANO, QUE SE OBTENIA DESDE UNOS TEXTBOX'S.

EN ESTA SECCIÓN USAREMOS SQLite PARA ACOPLAR CON NUESTRO FORM PARA HACER QUE SE ALMACENEN LA INFORMACIÓN EN ESA BD. !!ARRANCAMOS CON FUERZA, SIGAMOS APRENDIENDO!!

Lo primero que debemos de hacer es verificar si tenemos instalada SQLite.

$ sqlite3

Si ya lo tenemos instalada correctamente estamos OK(como se muestra la imagen en la primera linea), pero en caso no se tenga instala, debemos obviamente instalarlo con la siguiente linea de comandos:

$ sudo dnf install sqlite

Para que SQlite este preparado a ser accedido desde cualquier lenguaje de programación, debemos instalar las bibliotecas, los cuales ayudaran que soporte varios lenguajes de programación.

$ sudo dnf install sqlite-devel sqlite-tcl sqlite-jdbc

Si se prefiere una aplicacion grafica que nos ayude a crear la base de datos, podemos usar sqliteman, para ser instalada debemos ejecutar la siguiente linea:

$sudo dnf install sqliteman

Ahora es momento de crear nuestra base de datos, para ello abriremos sqliteman la cual en la sección anterior la habíamos instalado.

Solo al abrirse la aplicación, me dirigí al menu file>new se abrirá el explorar de archivos donde el cual debes de dar un nombre(BDatos.db) y seleccionar la carpeta donde se guardar la BD.

Una vez realizado, se creara de manera automática la BD, en la parte izquierda de la sección schema, debemos dar clic derecho sobre tables, y seleccionar la opcion create table, se mostrara una ventana como se muestra en la imagen de la izquierda, donde el cual debes de definir las columnas , tipo de datos, etc.

Una vez realizado ya tendremos nuestra tabla creada, como es nuestro caso la tabla Información.

Bueno ahora vamos a modificar nuestro Form que habíamos creado anteriormente, ahora aumentaremos un textbox, el cual servirá para poder consultar a una persona que existe en la base de datos.

Modificaremos el método del boton Registrar, el cual tendrá como función de realizar el insert into values de toda la información de cada textbox, debajo de ese boton hay un label que mostrara el mensaje de estado de la transacción con la base de datos.

En el siguiente script creamos el método de registrar y como vemos, nuestra pequeña aplicación, llega a registrarse con perfección con la base de datos.

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
import sqlite3
def Registrar(button):
    conn = sqlite3.connect('BDatos.db')
    c = conn.cursor()
    print("Conexion base de datos: Ok")
    text1 = box1.get_text()
    text2 = box2.get_text()
    text3 = box3.get_text()
    text4 = int(box4.get_text())
    text5 = box5.get_text()
    reg = (text1,text2,text3,text4,text5)
    c.execute("INSERT INTO Informacion (Nombres, Apellidos, Carrera, Edad, Hobby) VALUES('%s','%s','%s','%s','%s')" %(reg))
    conn.commit()
    lblresult.set_text("Los datos se registraron correctamente")
builder = Gtk.Builder()
builder.add_from_file("InputInformacion.glade")
handlers = {
    "clicboton":Registrar
}
builder.connect_signals(handlers)
window = builder.get_object("window1")
box1 = builder.get_object("boxnombres")
box2 = builder.get_object("boxapellidos")
box3 = builder.get_object("boxcarrera")
box4 = builder.get_object("boxedad")
box5 = builder.get_object("boxhobby")
lblresult = builder.get_object("lblresultado")
window.show_all()
Gtk.main() 

Bueno ahora vamos a crear un metodo que se encargara de realizar una consulta en la base de datos:

def Buscar(button):
    conn = sqlite3.connect('BDatos.db')
    c = conn.cursor()
    text6 = boxsearch.get_text()
    c.execute("SELECT * FROM Informacion WHERE Nombres = '%s'" % text6)

    for i in c:
        lblresult2.set_text("- Nombres: "+str(i[0])+"\n"+"- Apellidos: "+str(i[1])+"\n"+"- Carrera: "+str(i[2])+"\n"+"- Edad: "+str(i[3])+"\n"+"- Hobby: "+str(i[4]))
        lblresult3.set_text("Resultados de busqueda")
    print("Transaccion correcta")

    conn.commit()
    conn.close()

El script completo de Python, Base de Datos y el Form lo encontraran en la siguiente sección.

Tambien la pequeña aplicacion puede encontrarlo en github, para que pueda usarlo y revisarlo tranquilamente.

https://github.com/bressner/registro-alumnos

Iniciando con Python en Fedora, aquí se aprendió a usar Atom y Glade. Interesante!!! Ademas SQLite