Implementação de Cursores em Python para Manipulação de Bancos de Dados

O cursor em Python é um objeto que facilita a interação com bancos de dados, permitindo executar comandos SQL e recuperar resultados. Ele atua como um iterador e gerador, mantendo o estado das consultas realizadas. Inicialmente, o cursor não contém dados; após chamadas como fetchone() ou fetchall(), ele retorna tuplas com os registros. Uma característica importante é que o cursor é de uso único: após consumir todos os dados, não pode ser reutilizado para novas consultas, a menos que uma nova operação seja executada.

Para operações com bancos de dados em Python, é comum utilizar bibliotecas que simplificam a interação. O SQLite é uma opção popular por ser leve e integraod ao ecossistema Python através do módulo sqlite3, disponível na biblioteca padrão. Isso permite criar, consultar e modificar bancos de dados de forma eficiente sem dependências externas.

Para começar, importe o módulo e estabeleça uma conexão com o banco de dados. Se o arquivo especificado não existir, ele será criado automaticamente:


import sqlite3

conexao = sqlite3.connect('meubanco.db')
cursor = conexao.cursor()

Crie uma tabela para armazenar dados, definindo colunas e tipos de dados adequados:


cursor.execute("""
    CREATE TABLE IF NOT EXISTS usuarios (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        nome TEXT NOT NULL,
        email TEXT UNIQUE
    )
""")
conexao.commit()

Insira registros na tabela utilizando comandos SQL parametrizados para evitar injeção de SQL:


dados = [('Ana Silva', 'ana@email.com'), ('João Souza', 'joao@email.com')]
cursor.executemany("INSERT INTO usuarios (nome, email) VALUES (?, ?)", dados)
conexao.commit()

Para recuperar dados, execute consultas e use métodos commo fetchone() para obter um único registro ou fetchall() para todos:


cursor.execute("SELECT * FROM usuarios WHERE nome = ?", ('Ana Silva',))
resultado = cursor.fetchone()
print(resultado)  # Saída: (1, 'Ana Silva', 'ana@email.com')

Atualize registros existentes modificando campos específicos:


cursor.execute("UPDATE usuarios SET email = 'ana.silva@email.com' WHERE nome = ?", ('Ana Silva',))
conexao.commit()

Remova registros com o comando DELETE, garantindo que as alterações sejam confirmadas:


cursor.execute("DELETE FROM usuarios WHERE nome = ?", ('João Souza',))
conexao.commit()

Ao terminar as operações, feche a conexão para liberar recursos:


conexao.close()

O objeto de conexão gerencia a sessão com o banco de dados e suporta métodos essenciais como commit() para salvar alterações permanentemente e rollback() para desfazer transações pendentes, se disponível. O cursor, por sua vez, mantém o posicionamento durante iterações, permitindo o processamento sequencial dos resultados, mas deve ser recriado para novas consultas após o consumo total dos dados.

Tags: Python sqlite sqlite3 cursores bancos de dados

Publicado em 6-1 02:33 por Thomas