Capítulo 14: Banco de Dados com SQLite 🚗💰
Neste capítulo, vamos aprender a salvar dados de forma permanente em um banco de dados relacional usando o SQLite, com o tema GTA (Grand Theft Auto)!
📖 Por que usar Banco de Dados?
Arquivos de texto são bons para dados simples, mas para dados complexos e estruturados (como o inventário e dinheiro de um jogador), um Banco de Dados Relacional é muito melhor. O SQLite já vem nativo no Python!
Veja a estrutura da tabela que vamos criar:
erDiagram JOGADORES { INTEGER id PK TEXT nickname REAL dinheiro }
📖 Exemplo Guiado: Salvando o Progresso do CJ
Vamos criar um banco de dados chamado gta.db, criar uma tabela de jogadores e inserir o progresso do CJ.
- Crie o arquivo
salvar_progresso.pyna pastasrc/:
import sqlite3
# Conectando ao banco de dados (se não existir, ele cria o arquivo)
conn = sqlite3.connect('gta.db')
cursor = conn.cursor()
# Criando a tabela
cursor.execute('''
CREATE TABLE IF NOT EXISTS jogadores (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nickname TEXT,
dinheiro REAL
)
''')
# Inserindo dados
cursor.execute("INSERT INTO jogadores (nickname, dinheiro) VALUES ('CJ', 5000.0)")
# Salvando as alterações e fechando a conexão
conn.commit()
conn.close()
print("Progresso do CJ salvo com sucesso no banco de dados!")🕹️ Como Executar e Testar no VS Code
- Abra o arquivo
salvar_progresso.py. - Clique no botão Run Python File.
Resultado Esperado:
O programa exibirá a mensagem de sucesso e um arquivo chamado gta.db será criado na pasta.
🛠️ Prática Obrigatória 1: Listando Jogadores
Crie um programa chamado listar_progresso.py que conecte ao banco gta.db, busque todos os registros da tabela jogadores e os exiba no terminal.
🛠️ Prática Obrigatória 2: Novo Personagem
Crie um programa chamado novo_personagem.py que peça ao usuário para digitar o nickname e o dinheiro inicial de um novo personagem e insira esses dados no banco gta.db.
🔑 Gabarito de Código
Prática 1: listar_progresso.py
import sqlite3
conn = sqlite3.connect('gta.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM jogadores")
resultados = cursor.fetchall()
print("--- Jogadores no Banco ---")
for linha in resultados:
print(f"ID: {linha[0]} | Nick: {linha[1]} | Grana: $ {linha[2]}")
conn.close()Prática 2: novo_personagem.py
import sqlite3
nick = input("Digite o nome do personagem: ")
grana = float(input("Digite o dinheiro inicial: "))
conn = sqlite3.connect('gta.db')
cursor = conn.cursor()
cursor.execute("INSERT INTO jogadores (nickname, dinheiro) VALUES (?, ?)", (nick, grana))
conn.commit()
conn.close()
print("Personagem salvo!")📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
(Siga o mesmo padrão do Capítulo 01)