Barra laterale

programmazione:python:python_e_mysql

Python e mysql

Autore: Fabio Di Matteo
Ultima revisione: 21/04/2007

Interagire con il database mysql grazie al python è davvero banale e in un batter d'occhio si possono realizzare applicazioni di una certa complessità.

In questo articolo vi guiderò passo passo alla realizzazione di una piccola agendina elettronica con tanto di interfaccia grafica. Per adesso tralasciamo l'interfaccia grafica e concentriamoci sulla connessione al database.

Connessione al database

Il database che prendo in esempio (si chiama “prova”) ha una tabella di nome “tabella1” con i campi “id” , “cognome” ,“nome”; da questa tabella filtrerò tutti i nominativi il cui cognome inizia per una certa stringa contenuta nella variabile “criterio”. Creiamo il database e ricordiamoci di abilitare l'utente che usiamo in mysql a connettersi dall'host dove risiede il nostro database.

#!/usr/bin/env python
 
#importo il moduli che mi servono
import _mysql
import _mysql_exceptions #solo per creare il pacchetto indipendente
 
criterio="" #variabile criterio di ricerca del cognome
 
#mi connetto al database 
db=_mysql.connect(host="192.168.1.2",user="root",passwd="root",db="prova")
 
db.query("""SELECT * from tabella1 where cognome like'""" +  criterio + "%'" )
 
r=db.store_result() #rende disponibili i risultati
 
dati=r.fetch_row(0) #metto i risultati in una tupla (di tuple)	
print dati 	    #se voglio li stampo pure in console sottoforma di tupla

L'interfaccia grafica


Adesso , facendo riferimento all'articolo sviluppare con libglade, andiamo ad implementare una interfaccia grafica disegnata con Glade. L'interfaccia è molto semplice, contiene una GtkCList (griglia), delle entry e un bottone per la ricerca.

#!/usr/bin/env python
 
import pygtk  		#solo per creare il pacchetto indipendente
import gtk
import gtk.glade
import atk  		#solo per creare il pacchetto indipendente
import gtk._gtk  	#solo per creare il pacchetto indipendente
import pango  		#solo per creare il pacchetto indipendente
 
import _mysql
import _mysql_exceptions #solo per creare il pacchetto indipendente
 
 
class Application: 							
 
	def __init__(self): 						 
        	self.widgetTree = gtk.glade.XML('interfaccia/interfaccia.glade') 		
        	self.widgetTree.signal_autoconnect(self)			 
 
	def on_frmMain_delete_event(self, widget, *args):			
        	gtk.main_quit()
 
        #prendo il criterio di ricerca dalla texbox
	def on_cmdCerca_clicked(self, widget, *args):
		criterio=self.widgetTree.get_widget('txtCerca').get_text() 
 
		db=_mysql.connect(host="192.168.1.2",user="root",   
                  passwd="root",db="prova")
		db.query("""SELECT * from tabella1 where cognome like'""" +
                  criterio + "%'" )
 
		r=db.store_result() #rende disponibili i risultati
 
		dati=r.fetch_row(0) #metto i risultati in una tupla (di tuple)	
 
		griglia=self.widgetTree.get_widget('griglia')
		griglia.clear()	
 
		#metto i dati in una griglia	
		indice=0 				
		for i in dati:
			griglia.append(dati[indice])
			indice=indice+1
 
 
	#stampo da qualche parte le righe selezionate col mouse
	def on_griglia_select_row(self, widget, *args): 
		griglia=self.widgetTree.get_widget('griglia')
 
		#qui scrivo la riga selezionata sulla console 
		print "----------------------------------------------------"
		print "ID: ", griglia.get_text(griglia.selection[0],0)
		print "Cognome: ", griglia.get_text(griglia.selection[0],1)
		print "Nome: ", griglia.get_text(griglia.selection[0],2)
		print "----------------------------------------------------"
 
		#qui scrivo la riga selezionata sulle textbox
		id=self.widgetTree.get_widget('txtId')
		cognome=self.widgetTree.get_widget('txtCognome')
		nome=self.widgetTree.get_widget('txtNome')
 
		id.set_text(griglia.get_text(griglia.selection[0],0))
		cognome.set_text(griglia.get_text(griglia.selection[0],1))
		nome.set_text(griglia.get_text(griglia.selection[0],2))
 
 
 
Application()								
gtk.main()	

programmazione/python/python_e_mysql.txt · Ultima modifica: 18/04/2018 - 15:49 (modifica esterna)