Foros del Web » Programando para Internet » Python »

problema con consulta a base de datos sqlite3

Estas en el tema de problema con consulta a base de datos sqlite3 en el foro de Python en Foros del Web. Hola, estoy practicando las consultas a bases de datos a través de interfaz wxpython a la base de datos sqlite3 soy nuevo en este lenguaje ...
  #1 (permalink)  
Antiguo 26/07/2011, 07:42
Avatar de bosterkill  
Fecha de Ingreso: mayo-2011
Mensajes: 56
Antigüedad: 13 años, 6 meses
Puntos: 0
Pregunta problema con consulta a base de datos sqlite3

Hola, estoy practicando las consultas a bases de datos a través de interfaz wxpython a la base de datos sqlite3

soy nuevo en este lenguaje y no entiendo el ¿por que el error? y no encuentro solución alguna.....

aquí el código.

salu2

Código Python:
Ver original
  1. import wx
  2. import sqlite3
  3.  
  4. conn = sqlite3.connect('formulario.dat')
  5. cur = conn.cursor()
  6.  
  7. cur.execute("""SELECT * FROM inventario""")
  8. list = list(cur.fetchall())
  9. index = range(len(list))
  10.  
  11. class App(wx.App):
  12.     def OnInit(self):
  13.         self.ventana = wx.Frame(parent = None, title = u'Resultados.', size = (200,400), pos = (320,150))
  14.         panel = wx.Panel(self.ventana, -1)
  15.         name = wx.StaticText(panel, -1, 'Producto', pos = (20,30))
  16.         self.nombrecaja = wx.TextCtrl(panel, -1, '', pos = (20, 50))
  17.         self.nombrecaja.Bind(wx.EVT_TEXT, self.Buscar)
  18.        
  19.         return True
  20.        
  21.     def Buscar(self, evt):
  22.         self.grid.DeleteAllItems()
  23.        
  24.         cur.execute("""SELECT * FROM inventario""")
  25.         all = cur.fetchall()
  26.         criterio = self.nombrecaja.GetValue()
  27.         if criterio <> '':
  28.             cur.execute("""SELECT * FROM inventario WHERE producto LIKE ('%%%s%%')""" %(criterio))
  29.             items = cur.fetchall()
  30.         else:
  31.             items = []
  32.            
  33.        
  34.        
  35. aplicacion = App()
  36. aplicacion.MainLoop()
  #2 (permalink)  
Antiguo 26/07/2011, 08:31
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: problema con consulta a base de datos sqlite3

¿Cual es el error?

Lo acabo de correr y no mando ningún error.

Con excepción de lo siguiente:
  1. Estas utilizando nombre de variables que no deberías como list y all (ya que tienen una función en python)
  2. Nunca muestras el frame
  3. Nunca muestras la información (supongo que es items).
  4. No tienes definido self.grid

Tu descripción del problema es casi nula, así no podemos ayudarte mucho. Necesitamos saber mas de tu problema (a detalle) ademas de saber los campos y tipo de datos de cada campo de la tabla inventario.

Por favor danos mas información.
  #3 (permalink)  
Antiguo 26/07/2011, 12:25
Avatar de bosterkill  
Fecha de Ingreso: mayo-2011
Mensajes: 56
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: problema con consulta a base de datos sqlite3

Disculpe que no les di mucha información al respecto bueno lo que tengo hasta ahora es así 2 archivos .py

Frame.py

Código Python:
Ver original
  1. import wx
  2. import sqlite3 as dbapi
  3.  
  4. class MyFrame(wx.Frame):
  5.     def __init__(self, *args, **kwargs):
  6.         wx.Frame.__init__(self, *args, **kwargs)
  7.         MyPanel(self)
  8.        
  9. class MyPanel(wx.Panel):
  10.     def __init__(self, *args, **kwargs):
  11.         wx.Panel.__init__(self, *args, **kwargs)
  12.        
  13.         inventario = wx.StaticText(self, -1, u'Bienvenido Inventario: ', pos = (35,10))
  14.         codigo = wx.StaticText(self, -1, 'Codígo: ', pos = (20,30))
  15.         self.codigo_cuadro = wx.TextCtrl(self, -1, '', pos = (20,50))
  16.         producto = wx.StaticText(self, -1, 'Producto: ', pos = (20,80))
  17.         self.producto_cuadro = wx.TextCtrl(self, -1, '', pos = (20,100))
  18.         costo = wx.StaticText(self, -1, 'Costo: ', pos = (20,130))    
  19.         self.costo_cuadro = wx.TextCtrl(self, -1, '', pos = (20,150))
  20.         guardar = wx.Button(self, -1, 'Guardar', pos = (20,180))
  21.         buscar = wx.Button(self, -1, 'Buscar', pos = (20,210))
  22.         salir = wx.Button(self, -1, 'Salir', pos = (20,240))
  23.        
  24.         guardar.Bind(wx.EVT_BUTTON, self.OnGuardar)
  25.         buscar.Bind(wx.EVT_BUTTON, self.OnBuscar)
  26.         salir.Bind(wx.EVT_BUTTON, self.OnSalir)
  27.        
  28.     def OnGuardar(self, evt):
  29.         bd = dbapi.connect("formulario.dat")
  30.         cursor = bd.cursor()
  31.         cursor.execute("""create table if not exists inventario (codigo_cuadro txt, producto_cuadro txt, costo_cuadro txt)""")
  32.         bd.commit()
  33.         cursor.close()
  34.         bd.close()
  35.         ingresodecodigo = self.codigo_cuadro.GetValue()
  36.         dialogo = wx.MessageDialog(self, 'El producto %s, se ha guardado correctamente' % (ingresodecodigo), 'Información', wx.OK | wx.ICON_INFORMATION)
  37.         dialogo.ShowModal()
  38.         self.codigo_cuadro.Clear()
  39.         self.producto_cuadro.Clear()
  40.         self.costo_cuadro.Clear()
  41.         dialogo.Destroy()
  42.        
  43.        
  44.        
  45.     def OnBuscar(self, evt):
  46.         from prueba import MyFrame2
  47.        
  48.        
  49.        
  50.    
  51.     def OnSalir(self, evt):
  52.         self.Parent.Close()
  53.        
  54.        
  55.        
  56.        
  57. class App(wx.App):
  58.     def OnInit(self):
  59.         f = MyFrame(parent = None, title = u'Inventario', size = (200,400), pos = (320,150))
  60.         f.Show()
  61.         return True
  62.  
  63. aplicacion = App(0)
  64. aplicacion.MainLoop()

y prueba.py

la cual se llama o accede desde Frame.py

Código Python:
Ver original
  1. import wx
  2. import sqlite3
  3.  
  4. conn = sqlite3.connect('formulario.dat')
  5. cur = conn.cursor()
  6.  
  7. cur.execute("""SELECT * FROM inventario""")
  8. list = list(cur.fetchall())
  9. index = range(len(list))
  10.  
  11. class App(wx.App):
  12.     def OnInit(self):
  13.         self.ventana = wx.Frame(parent = None, title = u'Resultados.', size = (200,400), pos = (320,150))
  14.         panel = wx.Panel(self.ventana, -1)
  15.         name = wx.StaticText(panel, -1, 'Producto', pos = (20,30))
  16.         self.nombrecaja = wx.TextCtrl(panel, -1, '', pos = (20, 50))
  17.         self.nombrecaja.Bind(wx.EVT_TEXT, self.Buscar)
  18.        
  19.         return True
  20.        
  21.     def Buscar(self, evt):
  22.         self.grid.DeleteAllItems()
  23.        
  24.         cur.execute("""SELECT * FROM inventario""")
  25.         all = cur.fetchall()
  26.         criterio = self.nombrecaja.GetValue()
  27.         if criterio <> '':
  28.             cur.execute("""SELECT * FROM inventario WHERE producto LIKE ('%%%s%%')""" %(criterio))
  29.             items = cur.fetchall()
  30.         else:
  31.             items = []
  32.            
  33.        
  34.        
  35. aplicacion = App()
  36. aplicacion.MainLoop()

la cuestión es que quiero hacer pruebas con bases de datos, en relación a consultas de datos, es decir hacer busquedas en este caso de dicho productos... pero a pesar de ser algo simple se me complica... ya que no he visto otros ejemplos para guiarme... en la guia de sqlite3 se aprecia bien la introducción de datos a la base de datos, pero las consultas con wxpython no se aprecian muy bien....

Etiquetas: sqlite3, wxpython
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:11.