[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
Lun Mar 26 21:21:08 CEST 2012
Amigos gracias por sus respuestas, de la manera como lo pusiste funciono
bien. Muchas gracias.
El 26 de marzo de 2012 04:01, Marcos Sánchez Provencio
<rapto en arrakis.es>escribió:
> Hola a todxs
>
>
> inser="insert into interfaz values(%s,%s,%s,%s);"
> %(nombre,apellido,ci,tlf)
> cursor.execute(inser)
>
> debería ser
>
> inser = "insert into interfaz values(%s,%s,%s,%s)"
> params = nombre,apellido,ci,tlf
> cursor.execute(inser, params)
>
> No deberías incrustar nunca los valores de los parámetros como cadena. Lee
> el documento http://www.python.org/dev/peps/pep-0249/ (no sé si está en
> castellano).
>
> El 24/03/12 01:29, Jose Angel Rojas Valerio 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 listPython-es en python.orghttp://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
>
> _______________________________________________
> 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/20120326/611eba4b/attachment.html>
Más información sobre la lista de distribución Python-es