Buenas tardes!
Después de día y medio programando he llegado a terminar esta muestra sencilla muestra de cómo interactuar con Python en una base de datos SQLite3
Para esto cree la clase AccionesSQL. Dentro de ella, la primera linea importa la librería que necesitaremos para funcionar : import sqlite3

La función insertarTelefonoBD es el tercer trozo importante. Aquí se hace una inserción. Para esto usamos una sentencia SQL ejecutada sobre el cursor. Y al punto se realiza un commit porque sino la inserción no se hace efectiva.
Poco más abajo tenemos la función modificarTelefonoBD. Aquí, se desarrolla una actualización de un campo existente y salvo la sentencia SQL todo es igual a caso anterior. Lo mismo pasa con la función suprimirTelefonoBD. Mas esta, suprime.
La penúltima función es listarTelefonosBD y en ella se cargan y muestran todos los registros de la tabla indicada. Se puede añadir una clausula WHERE y también una ORDER BY, y así acotaríamos u ordenaríamos.
La función buscarTelefonosBDxNumero busca teléfonos dependiendo de la opción indicada. Me apeteció hacer 4 tipos de búsqueda: coincidencia total, coincidencia parcial, que empezase por un valor determinado o que acabase según un valor. Luego, para finalizar recorrí el cursor donde se guardaron los registros resultantes, y mostré los datos guardados.
A continuación, el código integro:
import sqlite3
import sys
class AccionesSQL:
def __init__(self):
self.conexion=sqlite3.connect('listinTelefonico.sqlite')
self.cursor=self.conexion.cursor()
def insertarTelefonoBD(self,nombre1,numero1, notas1):
SQL='insert into Telefonos (Nombre, NumeroTelefono, Notas) values("'+nombre1+'","'+numero1+'","'+notas1+'")'
self.cursor.execute(SQL)
self.conexion.commit()
print 'se ha insertado exitosamente'
def modificarTelefonoBD(self,id1, nombre1, numero1, notas1):
SQL='update Telefonos set Nombre="'+ nombre1 + '",NumeroTelefono="' + numero1 + '", Notas="'+notas1 +'" where id='+str(id1)
self.cursor.execute(SQL)
self.conexion.commit()
print 'modificacion exitosa'
def suprimirTelefonoBD(self, id):
SQL='delete from Telefonos where ID='+str(id)
self.cursor.execute(SQL)
self.conexion.commit()
def listarTelefonosBD (self):
SQL = 'select * from Telefonos order by nombre '
self.cursor.execute(SQL)
for row in self.cursor:
print "%s --> %s --> %s" % (row[0],row[1],row[2])
def buscarTelefonosBDxNumero(self, numero, opcion):
SQL='HOLA'
if opcion==1:
print 'Numeros que terminan por ' + numero
SQL = 'select * from Telefonos where NumeroTelefono like "%'+numero +'"'
self.cursor.execute(SQL)
elif opcion==2:
print 'Numeros que contienen el numero ' + numero
SQL = 'select * from Telefonos where NumeroTelefono like "%'+numero +'%"'
self.cursor.execute(SQL)
elif opcion==3:
print 'Numeros que empieza exactamente son el numero ' + numero
SQL = 'select * from Telefonos where NumeroTelefono = "'+numero +'"'
self.cursor.execute(SQL)
elif opcion==4:
print 'Numeros que empizan por ' + numero
SQL = 'select * from Telefonos where NumeroTelefono like "'+numero + '%"'
self.cursor.execute(SQL)
for row in self.cursor:
print "%s --> %s --> %s" % (row[0],row[1],row[2])
Esta parrafada que se gestiona en diferentes funciones la llamo desde otra clase según procede. Se llama Telefonos y su código es este:
from AccionesSQL import AccionesSQL
class Telefonos:
def __init__(self,nmb1,tlf1,nts1):
self.Nombre = nmb1
self.NumTelefono = tlf1
self.Notas = nts1
self.ID=0
def imprimir(self):
print self.Nombre + " --> " + self.NumTelefono
def insertar(self):
a1=AccionesSQL()
a1.insertarTelefonoBD(self.Nombre,self.NumTelefono,self.Notas)
def modificar(self, id1, nombre1, numeroTelefono1, notas1):
a1=AccionesSQL()
a1.modificarTelefono(id1, nombre1, numeroTelefono1, notas1)
def suprimir (self, id1):
a1=AccionesSQL()
a1.suprimirTelefonoBD(id1)
def listar(self):
a1=AccionesSQL()
a1.listarTelefonosBD()
def buscarPorNumero (self, numero1, op1):
a1=AccionesSQL()
a1.buscarTelefonosBDxNumero(numero1,op1)
La sentencia from AccionesSQL import AccionesSQL sirve para importar el código creado en la clase anterior. De esta manera podremos funcionar con las funciones anteriores llamándolas desde u objeto de esa clase.
Así por ejemplo en la función insertar podremos utilizar la función insertarTelefonoBD después de haber cread un objeto. Y en las diferentes funciones, el funcionamiento es igual.
Si he creado dos clases no ha sido por ir de listo, sino porque así todo funciona mejor. Es más sencillo y eficiente.
No hay comentarios:
Publicar un comentario