Fundamentos da conexão com bancos de dados em Python
Trabalhar com bancos de dados é essencial em qualquer programa moderno. Armazenar, recuperar e gerenciar dados permite criar aplicações completas, desde scripts simples até serviços web complexos.
Em Python, existem diversas formas de trabalhar com bancos de dados. Neste artigo, vamos detalhar a conexão com banco de dados usando o módulo sqlite3. Também veremos o uso do formato JSON para salvar dados com json.dump. Exploraremos os principais aspectos do trabalho com essas tecnologias.
Por que usar bancos de dados nos seus projetos
Se seus programas processam dados que precisam ser salvos entre execuções, um banco de dados é indispensável. O banco de dados Python sqlite3 oferece uma solução confiável para armazenar informações.
Vantagens de usar bancos de dados
Usar bancos de dados em projetos Python traz os seguintes benefícios:
• Armazenamento prático de dados estruturados • Acesso rápido e filtragem de informações • Gerenciamento centralizado de dados • Garantia de integridade dos dados • Possibilidade de criar backups • Escalabilidade da solução
Trabalhando com banco de dados SQLite em Python
O banco de dados SQLite é a escolha ideal para projetos pequenos. Ele é incorporado diretamente na aplicação, não requer um servidor separado e trabalha com arquivos no formato .db.
Conectando ao banco de dados SQLite
O módulo sqlite3 faz parte da biblioteca padrão do Python, ou seja, não é necessária instalação adicional.
import sqlite3
# Conectando ao banco de dados (se o arquivo não existir, ele será criado)
conn = sqlite3.connect('exemplo.db')
# Criando um cursor para executar comandos SQL
cursor = conn.cursor()
Ao conectar a um banco de dados que não existe, o arquivo é criado automaticamente. Isso simplifica o trabalho com novos projetos.
Criando uma tabela no banco de dados
Antes de adicionar dados, é necessário criar a estrutura da tabela. Usamos o comando SQL CREATE TABLE:
cursor.execute('''
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
idade INTEGER
)
''')
conn.commit()
O comando IF NOT EXISTS evita erros ao recriar a tabela. PRIMARY KEY AUTOINCREMENT garante a atribuição automática de identificadores únicos.
Adicionando dados à tabela
Para inserir dados, usamos o comando INSERT INTO. Recomenda-se usar consultas parametrizadas para proteção contra injeção SQL:
cursor.execute('''
INSERT INTO usuarios (nome, idade) VALUES (?, ?)
''', ('Ana', 30))
# Adicionando vários registros de uma vez
dados_usuarios = [
('Bruno', 25),
('Carla', 35),
('Daniel', 40)
]
cursor.executemany('''
INSERT INTO usuarios (nome, idade) VALUES (?, ?)
''', dados_usuarios)
conn.commit()
O método executemany permite adicionar vários registros de forma eficiente em uma única operação.
Lendo e extraindo dados
Para extrair dados, usamos diferentes métodos, dependendo da quantidade de registros desejada:
# Obtendo todos os registros
cursor.execute('SELECT * FROM usuarios')
todas_linhas = cursor.fetchall()
for linha in todas_linhas:
print(linha)
# Obtendo um único registro
cursor.execute('SELECT * FROM usuarios WHERE idade > ?', (30,))
uma_linha = cursor.fetchone()
print(uma_linha)
# Obtendo vários registros
cursor.execute('SELECT nome, idade FROM usuarios ORDER BY idade')
algumas_linhas = cursor.fetchmany(2)
for linha in algumas_linhas:
print(f"Nome: {linha[0]}, Idade: {linha[1]}")
Atualizando e excluindo dados
A modificação de registros existentes é feita com os comandos UPDATE e DELETE: