Banco de Dados com Python

Banco de dados são uma parte essencial do desenvolvimento de software, permitindo armazenar e manipular dados de forma eficiente. Neste artigo, vamos explorar como usar Python para interagir com um banco de dados SQL, especificamente SQLite, que é um banco de dados leve e fácil de usar.

1. Introdução ao SQLite

SQLite é uma biblioteca de software que implementa um banco de dados SQL embutido. Ele não requer um servidor separado e é uma excelente escolha para pequenos projetos e testes.

Bibliotecas Necessárias

Certifique-se de ter as bibliotecas necessárias instaladas:

pip install sqlite3

2. Estrutura do Projeto

Organize seu projeto com a seguinte estrutura:

project/
│
├── database.py
└── requirements.txt

3. Criando o Banco de Dados e Tabelas

Código para criar o banco de dados

No arquivo database.py, adicione o seguinte código para criar um banco de dados e uma tabela de usuários:

import sqlite3

# Conectando ao banco de dados (ou criando, se não existir)
conn = sqlite3.connect('users.db')
c = conn.cursor()

# Criando a tabela de usuários
c.execute('''
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    email TEXT NOT NULL UNIQUE
)
''')

# Salvando (commit) as mudanças e fechando a conexão
conn.commit()
conn.close()

4. Inserindo Dados no Banco de Dados

Código para inserir dados

No mesmo arquivo database.py, adicione a função para inserir dados na tabela:

def insert_user(name, email):
    conn = sqlite3.connect('users.db')
    c = conn.cursor()
    c.execute('INSERT INTO users (name, email) VALUES (?, ?)', (name, email))
    conn.commit()
    conn.close()

# Inserindo alguns usuários
insert_user('Alice', '[email protected]')
insert_user('Bob', '[email protected]')

5. Consultando Dados no Banco de Dados

Código para consultar dados

Adicione a função para consultar dados da tabela:

def get_all_users():
    conn = sqlite3.connect('users.db')
    c = conn.cursor()
    c.execute('SELECT * FROM users')
    users = c.fetchall()
    conn.close()
    return users

# Obtendo e imprimindo todos os usuários
users = get_all_users()
for user in users:
    print(user)

6. Atualizando Dados no Banco de Dados

Código para atualizar dados

Adicione a função para atualizar dados na tabela:

def update_user_email(user_id, new_email):
    conn = sqlite3.connect('users.db')
    c = conn.cursor()
    c.execute('UPDATE users SET email = ? WHERE id = ?', (new_email, user_id))
    conn.commit()
    conn.close()

# Atualizando o email do usuário com id 1
update_user_email(1, '[email protected]')

7. Deletando Dados no Banco de Dados

Código para deletar dados

Adicione a função para deletar dados da tabela:

def delete_user(user_id):
    conn = sqlite3.connect('users.db')
    c = conn.cursor()
    c.execute('DELETE FROM users WHERE id = ?', (user_id,))
    conn.commit()
    conn.close()

# Deletando o usuário com id 2
delete_user(2)

8. Testando o Código

Você pode testar cada função chamando-as diretamente no arquivo database.py ou criando um script separado para testar todas as funcionalidades.

Código completo de database.py

import sqlite3

# Conectando ao banco de dados (ou criando, se não existir)
conn = sqlite3.connect('users.db')
c = conn.cursor()

# Criando a tabela de usuários
c.execute('''
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    email TEXT NOT NULL UNIQUE
)
''')

# Salvando (commit) as mudanças e fechando a conexão
conn.commit()
conn.close()

def insert_user(name, email):
    conn = sqlite3.connect('users.db')
    c = conn.cursor()
    c.execute('INSERT INTO users (name, email) VALUES (?, ?)', (name, email))
    conn.commit()
    conn.close()

def get_all_users():
    conn = sqlite3.connect('users.db')
    c = conn.cursor()
    c.execute('SELECT * FROM users')
    users = c.fetchall()
    conn.close()
    return users

def update_user_email(user_id, new_email):
    conn = sqlite3.connect('users.db')
    c = conn.cursor()
    c.execute('UPDATE users SET email = ? WHERE id = ?', (new_email, user_id))
    conn.commit()
    conn.close()

def delete_user(user_id):
    conn = sqlite3.connect('users.db')
    c = conn.cursor()
    c.execute('DELETE FROM users WHERE id = ?', (user_id,))
    conn.commit()
    conn.close()

# Testando as funções
insert_user('Alice', '[email protected]')
insert_user('Bob', '[email protected]')

print("Usuários após inserção:")
users = get_all_users()
for user in users:
    print(user)

update_user_email(1, '[email protected]')

print("Usuários após atualização:")
users = get_all_users()
for user in users:
    print(user)

delete_user(2)

print("Usuários após deleção:")
users = get_all_users()
for user in users:
    print(user)

9. Conclusão

Neste artigo, aprendemos como criar um banco de dados SQL com SQLite e interagir com ele usando Python. Passamos pela criação da estrutura do banco de dados, inserção, consulta, atualização e deleção de dados.

Este guia fornece uma base sólida para começar a trabalhar com bancos de dados SQL em Python. Continue explorando e adicionando funcionalidades mais complexas ao seu banco de dados conforme avança no aprendizado de desenvolvimento de software.

Rolar para cima