SELECT

Essa 25a. lição encerra nosso curso.

Não foi nossa intenção, nessa última parte, ensinar a trabalhar com SQL ou com a versão dessa linguagem suportada pelo SQLite. Nossa idéia foi apenas mostrar como adequar seu uso aos recursos do XO.

Recomendamos a leitura do material que pode ser encontado no site do SQLite. Principalmente a parte de sintaxe, que difere um pouco da do SQL tradiconalmente usado.

Nessa lição vamos criar uma atividade (um pacote Python) que faz um relatório simples.

O comando SQL para ler todas as linhas e colunas é :

SELECT * FROM nome-da-tabela  

No exercício colocamos as linhas numa ScrolledWindow. Lembre-se de usar tipos multiespaçados. Poderíamos, é claro ter colocado um cabeçalho. Importante dimensionar bem a largura da janela para os dados não ficarem centralizados.

Só apresentamos, como sempre, uma parte do cógigo. Lembre-se dos imports específicos para o SQLite, visto em aula anterior.

#...
   def __init__(self):
       Activity.__init__(self)
       #Usar sempre letras mono-espaçadas quando trabalhar com db
       gtk.settings_get_default().props.gtk_font_name="Bitstream Vera Sans Mono 18"
       #Criando base para layout
       self.fix = gtk.Fixed()
       self.add(self.fix)
       self.fix.show()
       #Criando a ScrolledWindow
       self.sw = gtk.ScrolledWindow()
       self.sw.set_size_request(600,300)
       self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
       self.fix.put(self.sw,120,100)
       self.sw.show()
       #Criando Label onde vão ser colocads as linhas
       self.lbw = gtk.Label()
       self.sw.add_with_viewport(self.lbw)
       #Trabalhando com o DB
       conn = sqlite.connect("/databases/alunos.db")
       c = conn.cursor()
       c.execute("SELECT * FROM cad")
       self.linhas = ""
       #Varrendo todas as linhas e editando colunas
       for row in c:
          self.matricC = row[0].ljust(11," ")
          self.nomeC = row[1}.ljust(22," ")
          #Convertendo coluna numérica
          self.idadeC = row[2}
          self.idadeCS = str(self.idadeC)
          self.idadeCSE = self.idadeCS.ljust(7," ")
          self.codnivelC = row[3].ljust(12," ")
          #Criando as linhas, acumuladas para irem para o Label
          self.linhas = self.linhas + self.matricC + self.nomeC + self.idadeCSE + self.codnivelC + "\n"
       self.lbw.set_text(self.linhas)
       self.lbw.show()
       c.close()
       conn.close
 

Fizemos a conversão da coluna numérica "idade" em várias fases apenas para ficar mais claro. Um erro comum é errar a indentação, após a varredura das linhas. Cuidado.


LIÇÂO ANTERIOR
ÍNDICE HOMEPAGE