Foros del Web » Programando para Internet » Python »

Cargar tabla sqlite en Tkinter

Estas en el tema de Cargar tabla sqlite en Tkinter en el foro de Python en Foros del Web. Hola: Quisiera cargar el contenido de una tabla que está en una BD sqlite en una 2d table o un listbox (no sé cual seria ...
  #1 (permalink)  
Antiguo 16/09/2009, 00:55
 
Fecha de Ingreso: septiembre-2009
Mensajes: 3
Antigüedad: 14 años, 7 meses
Puntos: 0
Cargar tabla sqlite en Tkinter

Hola:

Quisiera cargar el contenido de una tabla que está en una BD sqlite en una 2d table o un listbox (no sé cual seria la mejor opción), ya sea al carga el programa o mediante un boton

El codigo:

Código:
from Tkinter import *

import sqlite3

root =Tk ()


#Creo la BD

connection = sqlite3.connect ('Test2.db')
cursor = connection.cursor()

cursor.execute('CREATE TABLE User (id INTEGER PRIMARY KEY, nombre TEXT, edad NUMERIC, correo TEXT, url TEXT,visitas NUMERIC)')

connection.commit()
cursor.close()
connection.close>()



#Inserto Datos

#crear cursor
cursor = connection.cursor()

datos=[
	('Pedro Perez', 34, 'cooreo1', '',4),
	 ('Maria Gomez', 25, 'correo2', '' ,7),
	  ('Pablo Rodriguez', 41, 'correo3', 'web', 3),
	]

for t in datos:
     cursor.execute('INSERT INTO User (nombre,edad,correo,url,visitas) values (?,?,?,?,?)',t)

#mandamos cambio a bd
connection.commit()

###DUDA presentacion de los registros en una 2d Table o en un Listbox ########



print "\n Lista de todos los registro de la base de datos: "
cursor.execute('SELECT * FROM User')
for row in cursor:
     print row
     

for row1 in cursor:
    l=Label(text=row1, relief=RIDGE)
    l.grid(row=5, column=1)
                       


######################################################################3

#cierre de cursor y bd
cursor.close()
connection.close()

if __name__ =='__main__':
    print "Acabado"
    
root.mainloop()

Un saludo y os agradezo la atención que me prestais
  #2 (permalink)  
Antiguo 17/09/2009, 12:42
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Cargar tabla sqlite en Tkinter

Código python:
Ver original
  1. from Tkinter import *
  2.  
  3. import sqlite3
  4.  
  5. root =Tk ()
  6.  
  7.  
  8. #Creo la BD
  9.  
  10. connection = sqlite3.connect ('Test2.db')
  11. cursor = connection.cursor()
  12.  
  13. # Por que creas la tabla cada vez que inicia el programa?
  14. cursor.execute('CREATE TABLE User (id INTEGER PRIMARY KEY, nombre TEXT, edad NUMERIC, correo TEXT, url TEXT,visitas NUMERIC)')
  15.  
  16. connection.commit()
  17. cursor.close()
  18. #connection.close>()
  19.  
  20.  
  21.  
  22. #Inserto Datos
  23.  
  24. #crear cursor
  25. cursor = connection.cursor()
  26.  
  27. datos=[
  28.     ('Pedro Perez', 34, 'cooreo1', '',4),
  29.      ('Maria Gomez', 25, 'correo2', '' ,7),
  30.       ('Pablo Rodriguez', 41, 'correo3', 'web', 3),
  31.     ]
  32.  
  33. for t in datos:
  34.      cursor.execute('INSERT INTO User (nombre,edad,correo,url,visitas) values (?,?,?,?,?)',t)
  35.  
  36. #mandamos cambio a bd
  37. connection.commit()
  38.  
  39. ###DUDA presentacion de los registros en una 2d Table o en un Listbox ########
  40.  
  41.  
  42.  
  43. print "\n Lista de todos los registro de la base de datos: "
  44. cursor.execute('SELECT * FROM User')
  45. listbox = Listbox(root)
  46. listbox.pack()
  47. for row in cursor:
  48.     listbox.insert(END, row)
  49.  
  50. ######################################################################3
  51.  
  52. #cierre de cursor y bd
  53. cursor.close()
  54. connection.close()
  55.  
  56. if __name__ =='__main__':
  57.     print "Acabado"
  58.    
  59. root.mainloop()

Solo que no entiendo, ¿por que creas la tabla cada vez que se ejecuta el programa?

No estaría de mas leer un poco la documentación de Tkinter
  #3 (permalink)  
Antiguo 21/09/2009, 00:55
 
Fecha de Ingreso: septiembre-2009
Mensajes: 3
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Cargar tabla sqlite en Tkinter

Gracias por tu interés, lo de crear tabla se que cuando vuelva a cargar el programa me da un error porque existe ya la tabla, lo he puesto simplemente para tener el fichero de DB en la pregunta del foro, la idea es saber si la tabla existe la cargo en el formulario y si no la creo y la cargo pero ésta parte creo que sé como hacerla, como digo me falta el presentar la informacion de la tabla en un formulario con un listbox multiple o con una 2d table

De todas las maneras gracias por tu sugerencia y tu interés aunque ya te digo que la documentación de Tkinter si que la he leído si que es cierto que soy bastante nuevo en python.
  #4 (permalink)  
Antiguo 21/09/2009, 10:12
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Cargar tabla sqlite en Tkinter

Entonces tu pregunta es "crear una tabla si no existe"

Bueno pues eso es parte del query no de python
Código:
CREATE TABLE IF NOT EXISTS table-name (estructura... )
Asi siempre tendrías una tabla con que trabajar.
  #5 (permalink)  
Antiguo 21/09/2009, 13:50
 
Fecha de Ingreso: septiembre-2009
Mensajes: 3
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Cargar tabla sqlite en Tkinter

Gracias razpeitia por tu respuesta, pero creo que no he sabido exponer la pregunta, la tabla ya la tengo creada con la estructura y datos y lo quiero es hacer que en un formulario en Tkinter y en un widget listbox o grid (2d table) mostrar el contenido de la tabla de la base de datos.

Gracias
  #6 (permalink)  
Antiguo 21/09/2009, 19:25
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Cargar tabla sqlite en Tkinter

Como ya te habia expuesto aqui es muy simple hacer un listbox. Por eso te recomendé leer la documentación de tkinter.

Ahora bien un muy básico sobre como hacer un listbox en tkinter
Código python:
Ver original
  1. from Tkinter import *
  2.  
  3. root = Tk()
  4.  
  5. listbox = Listbox(root)
  6. listbox.pack()
  7.  
  8. datos = ['dato 1', 'dato 2', 'dato 3']
  9.  
  10. for dato in datos:
  11.     listbox.insert(END, dato)
  12.  
  13. if __name__ == '__main__':
  14.     root.mainloop()

Solo cambias la variable "datos" (una lista de strings) por los registros que quieras mostrar.

En cuanto a la 2d table seria cuestión de leer un poco.
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 17:11.