Esta é uma prática passo a passo para quem está iniciando a integração de Python com o banco de dados SQLite. O SQLite é um banco de dados SQL leve, portátil e serverless (sem servidor). Além disso, o módulo sqlite3 já vem pré-instalado na biblioteca padrão do Python.
Fase inicial - criando o Banco de Dados
Objetivo da Prática
Criar um banco de dados local, construir uma tabela de clientes, executar todas as operações fundamentais do ciclo CRUD (Criar, Ler, Atualizar e Deletar) e fechar a conexão de forma segura.
Passo 1: Conectar ao Banco de Dados
Importe o módulo sqlite3 e abra uma conexão chamando sqlite3.connect(). Se o arquivo .db ainda não existir no diretório, o SQLite irá criá-lo automaticamente. Em seguida, crie o objeto cursor, que é responsável por executar os comandos SQL na base.
import sqlite3
# 1. Abre a conexão com o arquivo do banco de dados (ou cria se não existir)
conn = sqlite3.connect('meu_banco_de_dados.db')
# 2. Cria o objeto cursor para enviar comandos SQL
cursor = conn.cursor()
print("Conexão estabelecida com sucesso!")(Conceitos de conexão e cursor baseados nos materiais).
Passo 2: Criar uma Tabela (DDL)
Defina a estrutura da tabela utilizando o comando DDL (Data Definition Language) CREATE TABLE IF NOT EXISTS. A tabela clientes terá uma chave primária autoincrementada (id), além de colunas para nome, email e telefone.
# Executa a criação da tabela
cursor.execute('''
CREATE TABLE IF NOT EXISTS clientes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
email TEXT NOT NULL,
telefone TEXT
);
''')
# Confirma a alteração estrutural no banco
conn.commit()
print("Tabela 'clientes' pronta para uso!")(Comando de criação estrutural e confirmação baseados nos materiais).
Passo 3: Inserir Registros (DML - Create)
Para evitar falhas de segurança como SQL Injection, nunca concatene variáveis diretamente no texto da query; utilize marcadores de posição (?). Você pode inserir múltiplos registros em lote usando o método cursor.executemany() e depois confirmar as alterações com conn.commit().
# Lista de tuplas com os dados de exemplo
novos_clientes = [
("Ana Silva", "ana.silva@example.com", "11 99999-0001"),
("Bruno Souza", "bruno.souza@example.com", "11 99999-0002"),
("Carla Pereira", "carla.pereira@example.com", "11 99999-0003")
]
# Inserção em lote usando placeholders (?)
cursor.executemany(
"INSERT INTO clientes (nome, email, telefone) VALUES (?, ?, ?);",
novos_clientes
)
# Salva permanentemente a inserção no arquivo do banco
conn.commit()
print(f"{cursor.rowcount} registros inseridos com sucesso!")(Inserção segura com marcadores de posição baseada nos materiais).
Passo 4: Consultar os Dados (DQL - Read)
Para consultar as informações salvas, execute uma instrução SELECT. Utilize o método fetchall() para obter todas as linhas retornadas.
# Executa a consulta
cursor.execute("SELECT id, nome, email, telefone FROM clientes;")
# Recupera todas as linhas encontradas
resultados = cursor.fetchall()
print("\n--- Lista de Clientes ---")
for id_, nome, email, telefone in resultados:
print(f"ID: {id_} | Nome: {nome} | E-mail: {email} | Telefone: {telefone}")(Consulta de dados e varredura de resultados baseadas nos materiais).
Passo 5: Atualizar e Excluir Registros (Update / Delete)
Para alterar dados existentes ou remover um registro, utilize os comandos UPDATE e DELETE acompanhados da cláusula WHERE e dos marcadores ?.
# 1. Atualizar e-mail de um cliente específico pelo ID
cursor.execute(
"UPDATE clientes SET email = ? WHERE id = ?;",
("ana.nova@example.com", 1)
)
# 2. Deletar um cliente específico pelo ID
cursor.execute(
"DELETE FROM clientes WHERE id = ?;",
(3,)
)
# Confirma as alterações no banco de dados
conn.commit()
print("\nAlterações de atualização e exclusão aplicadas!")(Comandos DML de atualização e exclusão baseados nos materiais).
Passo 6: Fechar a Conexão
Após concluir todas as operações, feche o cursor e a conexão para garantir a liberação de recursos do sistema e a consistência do arquivo.
cursor.close()
conn.close()
print("Conexão fechada com segurança.")(Fechamento e boas práticas baseados nos materiais).
Passo Bônus: Leitura Avançada com Pandas
Você também pode integrar o banco SQLite à biblioteca Pandas para carregar os dados diretamente em um DataFrame usando pd.read_sql_query().
import pandas as pd
conn = sqlite3.connect('meu_banco_de_dados.db')
# Carrega a consulta direto em um DataFrame do Pandas
df_clientes = pd.read_sql_query("SELECT * FROM clientes", conn)
print("\n--- DataFrame do Pandas ---")
print(df_clientes)
conn.close()💡 Agora que tal expandir essa prática, vamos conectar esses comandos a uma interface web simples utilizando o micro-framework Bottle para criar um sistema com formulários no navegador.