Sigue el error MySQL

Juan José Rojo jjrojoc en hotmail.com
Mie Sep 12 09:40:23 CEST 2007


Aquí tienes el código funcionando, aunque tuve que poner el campo del spin 
en la base de datos como varchar porque me pedía también lo del int, si 
alguien sabe como arreglar eso, sería lo único que te falta.

# -*- 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='',db='ejemplo')
            cursor = db.cursor()

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

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

            #resultado=cursor.fetchall()
            db.commit()
            cursor.close()
            db.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()

>From: "Manuel Enrique González Ramírez" <maengora en gmail.com>
>Reply-To: La lista de python en castellano <python-es en aditel.org>
>To: python-es en aditel.org
>Subject: [Python-es] Sigue el error MySQL
>Date: Tue, 11 Sep 2007 18:52:06 -0500
>
>Continua el error al tratar de hacer la conexion.
>Este es el mensaje que me aparece:
>Traceback (most recent call last):
>   File "C:\Python25\ejms\dbconecta.py", line 51, in OnInsert
>     cursor.execute('insert into datos values(%d,%s,%d)' %
>(codigo,nombre,edad))
>TypeError: int argument required
>
>Y ya he volteado con los %d de todas las formas posibles.
>_______________________________________________
>Python-es mailing list
>Python-es en aditel.org
>http://listas.aditel.org/listinfo/python-es

_________________________________________________________________
Descarga gratis la Barra de Herramientas de MSN 
http://www.msn.es/usuario/busqueda/barra?XAPID=2031&DI=1055&SU=http%3A//www.hotmail.com&HL=LINKTAG1OPENINGTEXT_MSNBH




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