Apresentando o SQLite com Python

(este é o primeiro post do eljunior, o novo colaborador do pythonhelp)

Então você vem acompanhando há algum tempo o pythonhelp, e já está cheio de idéias para criar seus programas usando Python, sua linguagem preferida. Se você já começou a fazer alguma coisa, provavelmente já se deu conta que existem muitas questões relacionadas a guardar e acessar os dados utilizados pelo seu programa, seja ele uma mega-aplicação para controle de estoque ou um programa para fazer o gerenciamento da sua coleção de tazos (nossa, isso é muito anos 90..!).

Felizmente, muitos desses problemas já foram resolvidos, e você só precisa selecionar a ferramenta certa que irá ajudá-lo a completar sua tarefa com sucesso. Entram em cena os poderosos sistemas de bancos de dados. Sistemas de bancos de dados são para informações o que Python é para código: você pode viver sem eles, mas sua vida é muuuito mais fácil com eles. Usando banco de dados, você se preocupa com O QUE você vai armazenar, e PARA QUE você vai usar essas informações, sem ter que se preocupar demais em COMO você irá guardar tudo no disco, o leiaute dos arquivos, acessá-los eficientemente e ainda deixar tudo isso flexível pra o caso de você ter que alterar alguma coisa depois.

De uma forma bem resumida, trabalhar com banco de dados geralmente envolve o seguinte:

  1. Definir um modelo de dados (schema), isto é, quais tipos de dados você vai armazenar no banco, e como eles se relacionam. Você decide, por exemplo: “Vou armazenar informações sobre álbuns, que devem conter título, ano de lançamento, gênero e artistas. Artistas, por sua vez, conterão nome artístico, nome completo opcional, data provável de nascimento, e data de falecimento opcional.” Você faz isso usando a linguagem SQL (“Structured Query Language” == “Linguagem Estruturada para Pesquisa”), definindo tabelas e colunas, e os tipos de dados relacionados.
  2. Definir operações a serem feitas no banco de dados, a partir do schema definido. Por exemplo: “Em dado instante, a aplicação deverá adicionar informações de um álbum ou artista no banco de dados.” Ou, “quando o usuário clicar nesse botão, a aplicação deverá listar todos os álbuns ordenados por ano de lançamento”. Essas operações são chamadas de “queries” (consultas), e usualmente envolvem alterar os dados no banco ou buscar dados que estão guardados nele.
  3. Repetir os passos acima tantas vezes quanto for necessário — ou seja: eternamente… :).

Pois bem, hoje queremos apresentar-lhe um desses sistemas de banco de dados, o SQLite, que possui algumas características interessantes que o diferenciam de outros mais tradicionais (tipo MySQL, PostgreSQL, SQL Server, etc), é muito fácil de usar em Python e pode muito bem ser útil no seu próximo programa em Python.

O SQLite é o que chamamos de um banco de dados embutido, ou seja, é um banco de dados que cabe inteirinho em sua aplicação, sem precisar de um processo servidor como os sistemas de banco de dados mais tradicionais. Seu uso é muito popular em diversas aplicações para armazenar dados na máquina de um usuário. De fato, se você usa o Firefox, saiba que suas preferências de usuário, o histórico de sua navegação e diversas outras informações, são todas armazenadas em arquivos SQLite. Isso é legal porque fica muito fácil de carregar as informações desses arquivos e cruzá-las conforme for necessário, inclusive a partir de programas externos que “conheçam” SQLite. 1

Como você é inteligente e está usando Python, que vem com baterias inclusas, você já tem a sua disposição o módulo sqlite3, ao alcance de um simples import sqlite3. 2

O código abaixo usa o módulo sqlite3 para ler o arquivo que contém o banco de dados com o histórico de downloads do Firefox, e imprime no console o nome dos arquivos e o tipo MIME:

import os, sqlite3
from glob import glob

user_directory = os.path.expanduser('~')
files = glob(user_directory + '/.mozilla/firefox/*/downloads.sqlite')
if len(files) > 0:
    # abre o banco de dados, 'conecta':
    conn = sqlite3.connect(files[0])
    # executa uma consulta, selecionando o nome e tipo da tabela moz_downloads:
    cursor = conn.execute('SELECT name, mimeType FROM moz_downloads')

    # percorre os resultados da consulta, mostrando-os na tela:
    download = cursor.fetchone()
    while download:
        print download
        download = cursor.fetchone()
else:
    print 'Nao consegui achar nenhum arquivo com historico de downloads :('

É isso aí, a partir de agora você está oficialmente autorizado a explorar o SQLite nos seus próximos programas Python. 🙂

Você também pode querer testar aplicativos como o SQLite Browser, ou a extensão pro Firefox SQLite Manager, que permite você visualizar e modificar qualquer banco de dados SQLite no seu computador.

Veja mais sobre o SQLite em:

Notas:

1 Originalmente, o SQLite é uma biblioteca escrita em C, mas existem bibliotecas disponíveis para muitas outras linguagens. O suporte em Python é diferenciado porque já o inclui na instalação padrão.

2 O módulo sqlite3 está disponível por padrão em qualquer instalação Python, com versão maior ou igual 2.5. Caso você estiver usando um Python mais antigo, você ainda pode instalar o módulo sqlite3 disponível aqui

Anúncios

Um comentário sobre “Apresentando o SQLite com Python

  1. Pingback: Programando para a Web em Python | Python Help

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s