[Python-es] problema al insertar los datos en mysql desde python y una interfaz de gtk con glade

G V nadaird en gmail.com
Sab Mar 24 08:35:18 CET 2012


Si como dices el error es en el execute, el mas probable culpable son los
datos que le estas pasando a la función.
Lee bien lo que te dice la traza (o pegala por aquí)
El 24/03/2012 01:29, "Jose Angel Rojas Valerio" <joseangel038 en gmail.com>
escribió:

> 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.
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20120324/a6c13927/attachment.html>


Más información sobre la lista de distribución Python-es