[Python-es] problema al insertar los datos en mysql desde python y una interfaz de gtk con glade
Jose Angel Rojas Valerio
joseangel038 en gmail.com
Sab Mar 24 01:29:24 CET 2012
Buenas, tengo el siguiente problema: Tengo un archivo en py donde cargo la
interfaz que diseñe con glade, para extraer los datos de mysql lo hace
bien, pero el problema esta para insertar, no inserta los datos q le paso,
el error creo q esta en el cursor.execute(), abajo dejo el codigo parra ver
si me ayudan y adjunto la interfaz de glade.
import gtk
import MySQLdb
validar="abcdefghijklmnopqrstuvwxyz"
db=MySQLdb.connect(host='localhost',user='root',passwd='jarv88',db='prueba_gtk')
cursor=db.cursor()
sql='select * from interfaz'
cursor.execute(sql)
resultado=cursor.fetchall()
def insertar(nombre,apellido,ci,tlf):
try:
inser="insert into interfaz values(%s,%s,%s,%s);"
%(nombre,apellido,ci,tlf)
cursor.execute(inser)
db.commit()
return True
except:
print "no se pudo"
return False
def validar_cad(cad):
if cad.count("1")>=1 or cad.count("2")>=1 or cad.count("3")>=1 or
cad.count("4")>=1 or cad.count("5")>=1 or cad.count("6")>=1 or
cad.count("7")>=1 or cad.count("8")>=1 or cad.count("9")>=1:
return False
else:
return True
def validar_num(cad_num):
for c in validar:
if cad_num.count(c)>=1:
return False
else:
return True
class interfaz:
def __init__(self):
builder = gtk.Builder()
builder.add_from_file("interfaz_prueba.glade")
self.principal=builder.get_object('ventana_principal')
self.agregar=builder.get_object('ventana_agregar')
self.invalido=builder.get_object('ventana_invalido')
#self.caja=builder.get_object('caja')
self.caja_nomb=builder.get_object('caja_nomb')
self.caja_apel=builder.get_object('caja_apel')
self.caja_ci=builder.get_object('caja_ci')
self.caja_tlf=builder.get_object('caja_tlf')
self.bAgregar=builder.get_object('Agregar')
self.bLimpiar=builder.get_object('bLimpiar')
self.bGuardar=builder.get_object('bGuardar')
self.lista=builder.get_object('lista')
self.tree=builder.get_object('treeview1')
dict={ "on_Agregar_clicked": self.clickAgregar,
"on_bGuardar_clicked": self.guardar,
"on_Salir_clicked": self.salir,
"on_ventana_principal_destroy": self.salir,
"on_ventana_agregar_delete_event": self.salir1,
"on_ventana_agregar_close": self.salir1,
"on_bLimpiar_clicked": self.limpiar,
#"gtk_widget_hide": self.salir1
}
builder.connect_signals(dict)
#self.lista.append(["jose","rojas","1","2"])
self.a=0
self.b=0
self.c=0
self.d=0
self.principal.set_title("Prueba")
for registro in resultado:
nombre_db=registro[0]
apellido_db=registro[1]
ci_db=registro[2]
tlf_db=registro[3]
self.lista.append([nombre_db,apellido_db,ci_db,tlf_db])
def clickAgregar(self, widget):
#self.principal.destroy()
self.a=0
self.b=0
self.c=0
self.d=0
self.limpiar(self.agregar)
#self.__init__()
#self.agregar.
self.agregar.run()
#self.agregar.hide()
#self.limpiar(self.agregar)
#self.agregar.hide()
#self.lista.append(["jose","rojas","1","2"])
#self.principal.hide()
def limpiar(self,widget):
#self.agregar.delete_event()
#self.agregar.hide()
self.caja_nomb.set_text("")
self.caja_apel.set_text("")
self.caja_ci.set_text("")
self.caja_tlf.set_text("")
self.caja_nomb.grab_focus()
def guardar(self,widget):
nombre=self.caja_nomb.get_text()
apellido=self.caja_apel.get_text()
ci=self.caja_ci.get_text()
tlf=self.caja_tlf.get_text()
#if nombre.count("1")>=1 or nombre.count("2")>=1 or
nombre.count("3")>=1 or nombre.count("4")>=1 or nombre.count("5")>=1 or
nombre.count("6")>=1 or nombre.count("7")>=1 or nombre.count("8")>=1 or
nombre.count("9")>=1:
# self.caja_nomb.grab_focus()
# self.caja_nomb.set_text("")
# #self.invalido.run()
# #self.invalido.hide()
#else:
#nombre=self.caja_nomb.get_text()
# self.a=1
if validar_cad(nombre):
self.a=1
else:
self.caja_nomb.grab_focus()
self.caja_nomb.set_text("")
if validar_cad(apellido):
self.b=1
else:
self.caja_apel.grab_focus()
self.caja_apel.set_text("")
#for c in validar:
# if ci.count(c)>=1:
# self.caja_ci.grab_focus()
# self.caja_ci.set_text("")
#self.invalido.run()
#self.invalido.hide()
# break
#else:
# self.c=1
if validar_num(ci):
self.c=1
else:
self.caja_ci.grab_focus()
self.caja_ci.set_text("")
if validar_num(tlf):
self.d=1
else:
self.caja_tlf.grab_focus()
self.caja_tlf.set_text("")
if self.a==0 or self.b==0 or self.c==0 or self.d==0:
self.invalido.run()
self.invalido.hide()
if self.a==1 and self.b==1 and self.c==1 and self.d==1:
#if insertar(nombre,apellido,ci,tlf):
# self.lista.append([nombre,apellido,ci,tlf])
#else:
# print "no"
try:
#db=MySQLdb.connect(host='localhost',user='root',passwd='jarv88',db='prueba_gtk')
#c=db.cursor()
inser="insert into interfaz values(%s,%s,%s,%s);"
%(nombre,apellido,ci,tlf)
#self.insert="insert into interfaz
values("+nombre+","+apellido+","+ci+","+tlf+");"
cursor.execute(inser)
self.lista.append([nombre,apellido,ci,tlf])
db.commit()
except:
print "no se pudo"
#self.lista.append([nombre,apellido,ci,tlf])
#self.limpiar(self.agregar)
#self.agregar.hide()
def salir(self,widget):
gtk.main_quit()
#self.principal.show()
def salir1(self,widget,hide):
self.agregar.hide()
if __name__ == "__main__":
interfaz()
gtk.main()
De antemano gracias por la ayuda q me puedan brindar.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20120323/47cccea7/attachment.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: interfaz_prueba.glade
Type: application/x-glade
Size: 18419 bytes
Desc: no disponible
URL: <http://mail.python.org/pipermail/python-es/attachments/20120323/47cccea7/attachment.bin>
Más información sobre la lista de distribución Python-es