Trabalhando com SQLite em Python: guia completo para iniciantes e desenvolvedores experientes
Trabalhar com bancos de dados é uma das tarefas mais importantes no desenvolvimento de aplicações. Se você precisa de uma solução leve e embutida, sem a necessidade de instalar servidores separados, o SQLite é a escolha ideal para seus projetos.
Com Python, graças ao módulo padrão sqlite3, você pode criar, modificar e gerenciar bancos de dados diretamente do seu código de forma rápida e eficiente. Neste artigo, você aprenderá como conectar-se ao SQLite, realizar operações de inserção (INSERT), atualização (UPDATE) e muito mais.
O que é SQLite e por que escolhê-lo
SQLite é um banco de dados relacional embutido que armazena todas as informações em um único arquivo. Ele não requer um servidor separado e é perfeito para prototipagem, projetos pequenos e aplicativos móveis.
O SQLite é amplamente utilizado em diversas áreas do desenvolvimento de software. Muitos aplicativos populares, incluindo navegadores, mensageiros e aplicativos móveis, usam SQLite para armazenamento local de dados.
Vantagens do SQLite
- Não requer instalação de servidor
- Alta velocidade de execução
- Simplicidade de uso
- Excelente integração com Python através do módulo sqlite3
- Multiplataforma e portátil
- Suporte a transações ACID
- Consumo mínimo de recursos
Limitações do SQLite
- Não suporta gravações simultâneas de vários usuários
- Desempenho limitado ao trabalhar com grandes volumes de dados
- Ausência de replicação embutida
- Recursos limitados para aplicações complexas com múltiplos usuários
Conectando-se a um banco de dados SQLite em Python
Conexão básica
import sqlite3
# Conecta ao banco de dados (se o arquivo não existir, ele será criado)
conn = sqlite3.connect('meu_banco.db')
# Cria um cursor para executar consultas SQL
cursor = conn.cursor()
Conexão com banco de dados em memória
Para armazenamento temporário ou testes, você pode usar um banco de dados em memória:
conn = sqlite3.connect(':memory:')
Configuração de parâmetros de conexão
conn = sqlite3.connect('meu_banco.db', timeout=10)
conn.execute('PRAGMA foreign_keys = ON') # Ativa chaves estrangeiras
Criando tabelas no SQLite
Criando uma tabela simples
cursor.execute('''
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
idade INTEGER
)
''')
conn.commit()
Criando uma tabela com restrições adicionais
cursor.execute('''
CREATE TABLE IF NOT EXISTS produtos (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL UNIQUE,
preco REAL CHECK(preco > 0),
categoria TEXT DEFAULT 'sem_categoria',
criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''')
conn.commit()
Criando índices para otimização
cursor.execute('''
CREATE INDEX IF NOT EXISTS idx_usuarios_nome ON usuarios(nome)
''')
conn.commit()
Inserindo dados na tabela — INSERT no SQLite com Python
Inserindo um único registro
Uma das operações mais comuns é inserir dados em uma tabela SQLite:
cursor.execute('''
INSERT INTO usuarios (nome, idade) VALUES (?, ?)
''', ('João', 30))
conn.commit()
O uso de placeholders (?) protege contra injeção de SQL e é a abordagem recomendada.
Inserção em massa de dados
usuarios = [('Ana