Ayuda para insertar datos MySQL

Manuel Enrique González Ramírez maengora en gmail.com
Lun Sep 10 21:37:11 CEST 2007


Hola amigos,

Tengo una ventana en wx y una conexion a MySQL el problema es que no sé como
hacer para que los datos de los textos (codigo, nombre y edad) me los
reconozca la sentencia execute.  Les pongo el código y si alguien me puede
ayudar de una vez muchas gracias.
P.D. He hecho de todo, cambiando comillas; separando código de la consulta,
etc.
# -*- coding: cp1252 -*-
#!/usr/bin/python

import wx
import MySQLdb as my

class InsertData(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(280, 200))

        panel = wx.Panel(self, -1)

        gs = wx.FlexGridSizer(3, 2, 9, 9)
        vbox = wx.BoxSizer(wx.VERTICAL)
        hbox = wx.BoxSizer(wx.HORIZONTAL)

        codigo = wx.StaticText(panel, -1, 'Codigo')
        nombre = wx.StaticText(panel, -1, 'Nombre')
        edad = wx.StaticText(panel, -1, 'Edad')
        self.sp = wx.SpinCtrl(panel, -1, '', size=(60, -1), min=1, max=100)
        self.tc1 = wx.TextCtrl(panel, -1, size=(150, -1))
        self.tc2 = wx.TextCtrl(panel, -1, size=(150, -1))

        gs.AddMany([(codigo), (self.tc1, 1, wx.LEFT, 10),
                    (nombre), (self.tc2, 1, wx.LEFT, 10),
                    (edad), (self.sp, 0, wx.LEFT, 10)])

        vbox.Add(gs, 0, wx.ALL, 10)
        vbox.Add((-1, 30))

        insertar = wx.Button(panel, -1, 'Insertar', size=(-1, 30))
        cancelar = wx.Button(panel, -1, 'Cancelar', size=(-1, 30))
        hbox.Add(insertar)
        hbox.Add(cancelar, 0, wx.LEFT, 5)
        vbox.Add(hbox, 0, wx.ALIGN_CENTER | wx.BOTTOM, 10)

        self.Bind(wx.EVT_BUTTON, self.OnInsert, id=insertar.GetId())
        self.Bind(wx.EVT_BUTTON, self.OnCancel, id=cancelar.GetId())

        panel.SetSizer(vbox)

        self.Centre()
        self.Show(True)

    def OnInsert(self, event):
        try:
            db = my.connect
(host='localhost',user='root',passwd='12345678',db='ejemplo')
            cursor = db.cursor()

            codigo = self.tc1.GetValue()
            nombre = self.sp.GetValue()
            edad = self.tc2.GetValue()

            cursor.execute("insert into datos values('%d','%s','%d')" %
(codigo,nombre,edad))

            #resultado=cursor.fetchall()
            con.commit()
            cur.close()
            con.close()

        except my.Error, error:
            dlg = wx.MessageDialog(self, str(error), 'Ocurrio un error :(')
            dlg.ShowModal()

    def OnCancel(self, event):
        self.Close()



app = wx.App()
InsertData(None, -1, 'INGRESAR DATOS')
app.MainLoop()




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