Programación Web y Scripting > Python

 Problema con INNER JOIN MySQLdb y liststore

(1/1)

danmoracr:
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 ---#coding: utf-8import gtkimport MySQLdb as mdbimport sys try:    conn = mdb.connect('localhost', '', '', 'catalogo')        cr = conn.cursor()    cr.execute("SELECT * FROM libros l INNER JOIN categoria c ON l.idCategoria = c.idCategoria")        rows = cr.fetchall()        desc = cr.description            cr.close()    conn.close()    except mdb.Error, e:        print "Error %d: %s" % (e.args[0],e.args[1])    sys.exit(1)    class PyApp(gtk.Window):     def __init__(self):                #Llamada explicita al constructor de la clase padre        super(PyApp, self).__init__()                #Estas son las cabeceras        self.headers = [desc[0][0], desc[1][0], desc[2][0], desc[3][0], desc[7][0], desc[5][0]]                #Hacemos algunos ajustes a la apariencia de la ventana        self.set_size_request(550, 450)        self.set_position(gtk.WIN_POS_CENTER)        self.set_title("ListView")         vbox = gtk.VBox(False, 8)        sw = gtk.ScrolledWindow()        sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)                vbox.pack_start(sw, True, True, 0)         store = self.create_model()         treeView = gtk.TreeView(store)        treeView.connect("row-activated", self.on_activated)        treeView.set_rules_hint(True)        sw.add(treeView)         self.create_columns(treeView)        self.statusbar = gtk.Statusbar()                vbox.pack_start(self.statusbar, False, False, 0)         self.add(vbox)        self.show_all()        self.connect("destroy", gtk.main_quit)      def create_model(self):        store = gtk.ListStore(*[str]*len(self.headers))                for item in rows:            store.append(item[0], item[1], item[2], item[3], item[7], item[5])         return store      def create_columns(self, treeView):        for index, header in enumerate(self.headers):            rendererText = gtk.CellRendererText()            column = gtk.TreeViewColumn(header, rendererText, text=index)            column.set_sort_column_id(index)                treeView.append_column(column)      def on_activated(self, widget, row, col):        model = widget.get_model()        text = ', '.join(i for i in model[row])        self.statusbar.push(0, text) PyApp()gtk.main()  

danmoracr:
Ya encontré cual era el error que estaba cometiendo, muchas gracias de todas formas.  :jumpie:

Navegación

[0] Índice de Mensajes

Ir a la versión completa