Funções para manipular tabelas no SQLite.
Para adicionar comandos SQL importamos o módulo sqlite3, e usamos a função cursor.execute().
Criar Banco de dados
import sqlite3
from pathlib import Path
ROOT_PATH = Path(__file__).parent
conexao = sqlite3.connect(ROOT_PATH / "teste_banco.sqlite")
cursor = conexao.cursor()Criar tabela
def criar_tabela(conexao, cursor):
cursor.execute(
"CREATE TABLE clientes (id INTEGER PRIMARY KEY AUTOINCREMENT, nome VARCHAR(100), email VARCHAR(150))"
)
conexao.commit()
criar_tabela(conexao, cursor)Inserir um registro
def inserir_registro(conexao, cursor, nome, email):
data = (nome, email)
cursor.execute("INSERT INTO clientes (nome, email) VALUES (?,?);", data)
conexao.commit()
inserir_registro(conexao, cursor, "JoĂŁo", "joao@gmail.com")Atualizar um registro
def atualizar_registro(conexao, cursor, nome, email, id):
data = (nome, email, id)
cursor.execute("UPDATE clientes SET nome=?, email=? WHERE id=?;", data)
conexao.commit()
atualizar_registro(conexao, cursor, "João Atualizado", "joao.atualizado@gmail.com", 1)Inserir vários registros
def inserir_varios(conexao, cursor, dados):
cursor.executemany("INSERT INTO clientes (nome, email) VALUES (?,?)", dados)
conexao.commit()
dados = [
("Guilherme", "guilherme@gmail.com"),
("Chappie", "chappie@gmail.com"),
("Melaine", "melaine@gmail.com"),
]
inserir_varios(conexao, cursor, dados)Excluir um registro
def excluir_registro(conexao, cursor, id):
data = (id,)
cursor.execute("DELETE FROM clientes WHERE id=?;", data)
conexao.commit()
excluir_registro(conexao, cursor, 2)Recuperar um registro
def recuperar_cliente(cursor, id):
cursor.execute("SELECT email, id, nome FROM clientes WHERE id=?", (id,))
return cursor.fetchone()
cliente = recuperar_cliente(cursor, 5)
print(cliente)Recuperar um dicionário do registro
É necessário um novo cursor para converter a tupla em dicionário, para isso adicione:
cursor.row_factory = sqlite3.Row
def recuperar_cliente(cursor, id):
cursor.execute("SELECT email, id, nome FROM clientes WHERE id=?", (id,))
return cursor.fetchone()
cliente = recuperar_cliente(cursor, 5)
print(dict(cliente))
print(cliente["email"], cliente["id"], cliente["nome"])
print(f'Seja bem vindo ao sistema {cliente["nome"]}')Listar os nomes do dicionário de registros
def listar_clientes(cursor):
return cursor.execute("SELECT * FROM clientes ORDER BY nome DESC;")
clientes = listar_clientes(cursor)
for cliente in clientes:
print(dict(cliente))Para saber mais: Python sqlite3 Module