• Viernes 15 de Noviembre de 2024, 10:33

Autor Tema:  Problema con INNER JOIN MySQLdb y liststore  (Leído 1558 veces)

danmoracr

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Problema con INNER JOIN MySQLdb y liststore
« en: Martes 23 de Agosto de 2011, 19:56 »
0
Buenas, la verdad esta es la primera vez que escribo en un foro, pero es que he buscado en internet soluciones y no las encuentro, talvez alguien que si sepa como hacerlo me pueda ayudar.

Tengo un codigo con gtk y mysqldb donde llamo a dos tablas que las uno con un JOIN y al intentar mostrar el contenido en un liststore no se como hacer que me muestre solo los campos que necesito.

El error que me imprime es el siguiente:
Traceback (most recent call last):
  File "/home/daniel/Documentos/python/practices/PyApp2.py", line 84, in <module>
    PyApp()
  File "/home/daniel/Documentos/python/practices/PyApp2.py", line 45, in __init__
    store = self.create_model()
  File "/home/daniel/Documentos/python/practices/PyApp2.py", line 66, in create_model
    store.append(item[0], item[1], item[2], item[3], item[7], item[5])
TypeError: GtkListStore.append() takes at most 1 argument (6 given)

Y el codigo que estoy usando lo detallo a continuación:

Código: Python
  1. #coding: utf-8
  2. import gtk
  3. import MySQLdb as mdb
  4. import sys
  5.  
  6. try:
  7.     conn = mdb.connect('localhost', '', '', 'catalogo')
  8.    
  9.     cr = conn.cursor()
  10.     cr.execute("SELECT * FROM libros l INNER JOIN categoria c ON l.idCategoria = c.idCategoria")
  11.    
  12.     rows = cr.fetchall()
  13.    
  14.     desc = cr.description
  15.        
  16.     cr.close()
  17.     conn.close()
  18.    
  19. except mdb.Error, e:
  20.    
  21.     print "Error %d: %s" % (e.args[0],e.args[1])
  22.     sys.exit(1)
  23.    
  24. class PyApp(gtk.Window):
  25.     def __init__(self):
  26.        
  27.         #Llamada explicita al constructor de la clase padre
  28.         super(PyApp, self).__init__()
  29.        
  30.         #Estas son las cabeceras
  31.         self.headers = [desc[0][0], desc[1][0], desc[2][0], desc[3][0], desc[7][0], desc[5][0]]
  32.        
  33.         #Hacemos algunos ajustes a la apariencia de la ventana
  34.         self.set_size_request(550, 450)
  35.         self.set_position(gtk.WIN_POS_CENTER)
  36.         self.set_title("ListView")
  37.  
  38.         vbox = gtk.VBox(False, 8)
  39.         sw = gtk.ScrolledWindow()
  40.         sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
  41.         sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
  42.        
  43.         vbox.pack_start(sw, True, True, 0)
  44.  
  45.         store = self.create_model()
  46.  
  47.         treeView = gtk.TreeView(store)
  48.         treeView.connect("row-activated", self.on_activated)
  49.         treeView.set_rules_hint(True)
  50.         sw.add(treeView)
  51.  
  52.         self.create_columns(treeView)
  53.         self.statusbar = gtk.Statusbar()
  54.        
  55.         vbox.pack_start(self.statusbar, False, False, 0)
  56.  
  57.         self.add(vbox)
  58.         self.show_all()
  59.         self.connect("destroy", gtk.main_quit)
  60.  
  61.  
  62.     def create_model(self):
  63.         store = gtk.ListStore(*[str]*len(self.headers))
  64.        
  65.         for item in rows:
  66.             store.append(item[0], item[1], item[2], item[3], item[7], item[5])
  67.  
  68.         return store
  69.  
  70.  
  71.     def create_columns(self, treeView):
  72.         for index, header in enumerate(self.headers):
  73.             rendererText = gtk.CellRendererText()
  74.             column = gtk.TreeViewColumn(header, rendererText, text=index)
  75.             column.set_sort_column_id(index)    
  76.             treeView.append_column(column)
  77.  
  78.  
  79.     def on_activated(self, widget, row, col):
  80.         model = widget.get_model()
  81.         text = ', '.join(i for i in model[row])
  82.         self.statusbar.push(0, text)
  83.  
  84. PyApp()
  85. gtk.main()
  86.  
  87.  

danmoracr

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re:Problema con INNER JOIN MySQLdb y liststore
« Respuesta #1 en: Martes 23 de Agosto de 2011, 21:00 »
0
Ya encontré cual era el error que estaba cometiendo, muchas gracias de todas formas.  :jumpie: