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