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.

  1. Crie o arquivo salvar_progresso.py na pasta src/:
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

  1. Abra o arquivo salvar_progresso.py.
  2. 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)


Capitulo Anterior | Proximo Capitulo