domingo, 7 de octubre de 2012
pequeño ejemplo en python un ABM con Sqlite3
#segovia-altas-bajas-sqlite3
import sqlite3 as dbapi
import os
arch="bbdd.dat"
def AgregaDatoDeptos(): #Agrega datos a la tabla deptos si el depto coincide con alguno de personas imprime la direccion
bbdd = dbapi.connect(arch)
cursor = bbdd.cursor()
print('Ingrese el Depto')
dep=raw_input('Depto: ');
while (dep!='0'):
dire=raw_input('Direccion: ');
cursor.execute("insert into Deptos values (?,?)",(dep,dire))#Recordar que es posicional los ?
print('Ingrese otro depto, o cero para salir');
dep=raw_input('Depto: ');
bbdd.commit()
bbdd.close()
def AgregaDatoPersonas(): #Agrega datos a la tabla personas
bbdd = dbapi.connect(arch)
cursor = bbdd.cursor()
print('Ingrese el nombre')
nom=raw_input('Nombre: ');
while (nom!='0'):
doc=raw_input('Doc: ');
departamento=raw_input('Departamento: ');
cursor.execute("insert into Personas values (?,?,?)",(nom,doc,departamento))#Recordar que es posicional los ?
print('Ingrese otro nombre, o cero para salir');
nom=raw_input('Nombre: ');
bbdd.commit()
bbdd.close()
def CrearTabla(): #Crea Tablas solo si no existen
bbdd = dbapi.connect(arch)
cursor = bbdd.cursor()
cursor.execute("""create table if not exists Personas (Id INTEGER UNIKE PRIMARY KEY, nombre text,dni text,departamento text)""")
cursor.execute("""create table if not exists Deptos (Id INTEGER UNIKE PRIMARY KEY, Depto text,Direccion text)""")
bbdd.commit()
bbdd.close()
def Modificar(): #Modifica datos de una persona buscada por nombre
nom2=raw_input("Ingrese el nombre a buscar: ")
nom=raw_input('Nombre modificado: ');
doc=raw_input('Doc modificado: ');
dep=raw_input('Departamento modificado: ');
bbdd = dbapi.connect(arch)
cursor = bbdd.cursor()
cursor.execute("UPDATE Personas SET nombre = '"+nom+"',dni = '"+doc+"',departamento = '"+dep+"' WHERE nombre = '"+nom2+"'")
nom2=raw_input("Desea guardar los cambios? responder con s o n ") #guarda o no los cambios recicle la variable jeje
if nom2=='s':
bbdd.commit()
else:
bbdd.rollback()
bbdd.close()
def ImprimirDatos(): #Imprime la tabla ordenada por departamento
if os.path.exists(arch):
bbdd = dbapi.connect(arch)
cursor = bbdd.cursor()
cursor.execute("select * from Personas order by departamento")
#print "Cantidad de elementos: "+str(len(cursor.fetchall())) #cantidad de elementos al usarlo vacia la tupla
print "Listado de Personas"
print " "
for tupla in cursor.fetchall():
print tupla #En caso de querer imprimir solo un dato usar tupla[0] un rango tupla[0:1]
print "------------------------------------------"
print "Nombre de Campos"
print " "
cursor.execute("select * from Personas")
for i in cursor.description:
print i[0]
#print cursor.description()
#for tupla in cursor.fetchall():
# print tupla
bbdd.close()
else:
print "No existe el archivo"
def ImprimirTablasJuntas():
bbdd = dbapi.connect(arch)
cursor = bbdd.cursor()
cursor.execute("select * from Personas,Deptos where Personas.departamento=Deptos.Depto")
for tupla in cursor.fetchall():
print tupla
bbdd.close()
def ImprimirTablasCantporDepto():
bbdd = dbapi.connect(arch)
cursor = bbdd.cursor()
#cursor.execute("select Personas.departamento,Deptos.Depto from Personas,Deptos Left Join Deptos USING(Depto)")
cursor.execute("select distinct(Personas.departamento),count(Personas.departamento) from Personas group by departamento")
for tupla in cursor.fetchall():
print tupla
bbdd.close()
def BorraDato(): #Borra una persona
bbdd = dbapi.connect(arch)
cursor = bbdd.cursor()
nom=raw_input('Nombre: ')
cursor.execute("DELETE from Personas WHERE nombre='"+nom+"'")
bbdd.commit()
bbdd.close()
if __name__=="__main__":
op='2'
while (op!='0'):
print('\n*****************************')
print(' Menu Principal ')
print('*****************************')
print('0-Salir')
print('1-Agregar Dato Personas')
print('2-AgregarDepto')
print('3-Modificar Dato')
print('4-Borra Dato')
print('5-Crear Tabla')
print('6-Imprimir Tablas Juntas')
print('7-Imprimir Tablas Cantidad por Depto')
print('8-Imprimir Datos')
print('*****************************')
op=raw_input('Opcion: ')
if (op=='1'):
AgregaDatoPersonas()
elif (op=='2'):
AgregaDatoDeptos()
elif (op=='3'):
Modificar()
elif (op=='4'):
BorraDato()
elif (op=='5'):
CrearTabla()
elif (op=='6'):
ImprimirTablasJuntas()
elif (op=='7'): #Usa el count
ImprimirTablasCantporDepto()
elif (op=='8'):
ImprimirDatos()
Suscribirse a:
Enviar comentarios (Atom)
Muy bueno tu ejemplo, Angel.
ResponderEliminarCómo es el archivo: bbdd.dat?