• Martes 19 de Noviembre de 2024, 03:17

Autor Tema:  Cargar una tabla de sqlite en una 2d table  (Leído 2351 veces)

jp_lujan

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Cargar una tabla de sqlite en una 2d table
« en: Lunes 14 de Septiembre de 2009, 15:15 »
0
Hola:

Soy nuevo en esto de python me dedico al mundo del diseño grafico en 3D, anteriormente había realizado algo de programación en VBA y .NET.

La duda es la siguiente: en el codigo que os presento mas abajo me gustaría poder presentar en una 2d table o un listbox de Tkinter (no sé cual seria la mejor opción) el contenido de la table ya sea al carga el programa o mediante un boton

El codigo:

Código: Python
  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. cursor.execute('CREATE TABLE User (id INTEGER PRIMARY KEY, nombre TEXT, edad NUMERIC, correo TEXT, url TEXT,visitas NUMERIC)')
  14.  
  15. connection.commit()
  16. cursor.close()
  17. connection.close>()
  18.  
  19.  
  20.  
  21. #Inserto Datos
  22.  
  23. #crear cursor
  24. cursor = connection.cursor()
  25.  
  26. datos=[
  27.     ('Pedro Perez', 34, 'maria@sucorreo.com', '' ,7),
  28.       ('Pablo Rodriguez', 41, for t in datos:
  29.      cursor.execute('INSERT INTO User (nombre,edad,correo,url,visitas) values (?,?,?,?,?)',t)
  30.  
  31. #mandamos cambio a bd
  32. connection.commit()
  33.  
  34. ###DUDA presentacion de los registros en una 2d Table o en un Listbox ########
  35.  
  36.  
  37.  
  38. print "n Lista de todos los registro de la base de datos: "
  39. cursor.execute('SELECT * FROM User')
  40. for row in cursor:
  41.      print row
  42.      
  43.  
  44. for row1 in cursor:
  45.     l=Label(text=row1, relief=RIDGE)
  46.     l.grid(row=5, column=1)
  47.                        
  48.  
  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()
  60.  
  61.  


Un saludo y os agradezo la atención que me prestais
Gracias

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Cargar una tabla de sqlite en una 2d table
« Respuesta #1 en: Miércoles 23 de Septiembre de 2009, 16:06 »
0
Sorry por no haber respondido antes, si todavía lo necesitas aquí tienes.
Código: Python
  1. ###DUDA presentacion de los registros en una 2d Table o en un Listbox ########
  2. listbox = Listbox(root)  #Creas el control Listbox
  3. listbox.pack()
  4.  
  5.  
  6. print "n Lista de todos los registro de la base de datos: "
  7. cursor.execute('SELECT nombre FROM User')  #Solamente colocaría el nombre para no imprimir todos los datos.
  8. for row in cursor:
  9.      listbox.insert(END, row[0])
  10.  
El pasado son solo recuerdos, el futuro son solo sueños

jp_lujan

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Cargar una tabla de sqlite en una 2d table
« Respuesta #2 en: Jueves 24 de Septiembre de 2009, 08:31 »
0
Muchas gracias Edo por tu ayuda, ahora lo que estoy intentado es hacer una grid de Label y que en cada Label me aparezca un campo de la tabla

Código: Python
  1.  
  2. #crear cursor
  3. cursor = cnn.cursor()
  4. cursor.execute('SELECT * FROM User')
  5. row = cursor
  6.  
  7. #Obtengo lista con las filas
  8. filas = cursor.fetchall()
  9. #obtengo longitud de la lista filas
  10. contFilas = len(filas)
  11.  
  12. #Obtengo lista con la descripcion de las columnas
  13. desColumna = [col[0] for col in cursor.description]
  14. #Obtengo longitud de la lista desColumna
  15. contColumna = len(desColumna)
  16.  
  17.  
  18.  
  19.  
  20. #for row in cursor:
  21. for i in range(contFilas):
  22.     for j in range(contColumna):
  23.         l = Label(text= filas[2], relief=SUNKEN )
  24.         l.grid(row=i, column=j, sticky=NSEW)
  25.  
  26.