Python é uma linguagem versátil e amplamente utilizada para manipular bancos de dados. Este tutorial detalhado apresenta como conectar, criar e gerenciar bancos de dados usando SQLite, MySQL e PostgreSQL. Também inclui exercícios práticos e um projeto real para consolidar o aprendizado.
Introdução à Manipulação de Bancos de Dados
Bancos de dados são fundamentais para armazenar, organizar e acessar informações de maneira eficiente. Em Python, você pode trabalhar com diferentes tipos de bancos de dados utilizando bibliotecas específicas, como sqlite3, MySQL Connector e psycopg2.
SQLite: Configuração e Operações Básicas
O que é SQLite?
SQLite é um banco de dados embutido que não requer instalação de software adicional. Ideal para projetos pequenos e protótipos.
Conectando e Criando um Banco de Dados
import sqlite3
# Conectando ao banco de dados
conn = sqlite3.connect('livraria.db') # Cria o banco de dados se ele não existir
cursor = conn.cursor()
# Criando uma tabela
cursor.execute("""
CREATE TABLE IF NOT EXISTS livros (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
autor TEXT NOT NULL,
ano INTEGER
)
""")
conn.commit()
Operações CRUD em SQLite
import sqlite3
# Conectando ao banco de dados
conn = sqlite3.connect('livraria.db') # Cria o banco de dados se ele não existir
cursor = conn.cursor()
# Criando uma tabela
cursor.execute("""
CREATE TABLE IF NOT EXISTS livros (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
autor TEXT NOT NULL,
ano INTEGER
)
""")
conn.commit()
Inserindo Dados
cursor.execute("""
INSERT INTO livros (titulo, autor, ano)
VALUES ('Python para Iniciantes', 'João Silva', 2022)
""")
conn.commit()
Lendo Dados
cursor.execute("SELECT * FROM livros")
for livro in cursor.fetchall():
print(livro)
Atualizando Dados
cursor.execute("""
UPDATE livros
SET autor = 'Maria Souza'
WHERE titulo = 'Python para Iniciantes'
""")
conn.commit()
Excluindo Dados
cursor.execute("DELETE FROM livros WHERE titulo = 'Python para Iniciantes'")
conn.commit()
Fechando a Conexão
conn.close()
MySQL: Configuração e Operações Básicas
Configuração do MySQL
- Instale o MySQL em seu sistema.
- Instale o conector Python:
pip install mysql-connector-python
Conectando e Criando um Banco de Dados
import mysql.connector
conn = mysql.connector.connect(
host="localhost",
user="root",
password="sua_senha"
)
cursor = conn.cursor()
# Criando o banco de dados
cursor.execute("CREATE DATABASE IF NOT EXISTS livraria")
cursor.execute("USE livraria")
# Criando uma tabela
cursor.execute("""
CREATE TABLE IF NOT EXISTS livros (
id INT AUTO_INCREMENT PRIMARY KEY,
titulo VARCHAR(255) NOT NULL,
autor VARCHAR(255) NOT NULL,
ano INT
)
""")
Operações CRUD em MySQL
O processo é semelhante ao SQLite, mas usa sintaxe MySQL.
Inserindo Dados
cursor.execute("""
INSERT INTO livros (titulo, autor, ano)
VALUES ('Aprendendo MySQL', 'Ana Clara', 2023)
""")
conn.commit()
Atualização de Dados:
cursor.execute("""
UPDATE livros
SET autor = 'Maria Souza'
WHERE titulo = 'Python para Iniciantes'
""")
conn.commit()
Ler Dados
cursor.execute("SELECT * FROM livros")
for livro in cursor.fetchall():
print(livro)
Excluir Dados
cursor.execute("DELETE FROM clientes WHERE id = 1")
conn.commit()
Fechando a Conexão
conn.close()
PostgreSQL: Configuração e Operações Básicas
Configuração do PostgreSQL
- Instale o PostgreSQL e configure o usuário.
- Instale o conector Python
pip install psycopg2
Conectando e Criando um Banco de Dados
import psycopg2
conn = psycopg2.connect(
host="localhost",
database="postgres",
user="postgres",
password="sua_senha"
)
cursor = conn.cursor()
# Criando uma tabela
cursor.execute("""
CREATE TABLE IF NOT EXISTS livros (
id SERIAL PRIMARY KEY,
titulo VARCHAR(255) NOT NULL,
autor VARCHAR(255) NOT NULL,
ano INT
)
""")
conn.commit()
Operações CRUD em PostgreSQL
As operações CRUD seguem a mesma lógica dos outros bancos.
Inserindo Dados
cursor.execute("""
INSERT INTO livros (titulo, autor, ano)
VALUES ('Dominando PostgreSQL', 'Carlos Lima', 2024)
""")
conn.commit()
Lendo Dados
cursor.execute("SELECT * FROM livros")
for livro in cursor.fetchall():
print(livro)
Atualização de Dados:
cursor.execute("""
UPDATE livros
SET autor = 'Maria Souza'
WHERE titulo = 'Python para Iniciantes'
""")
conn.commit()
Fechando a Conexão
conn.close()
Projeto Prático: Sistema de Gerenciamento de Livros
Crie um sistema simples de gerenciamento de livros. Ele deve:
- Conectar ao banco de dados.
- Permitir adicionar, visualizar, editar e excluir livros.
- Salvar e exibir os dados de maneira organizada.
Código
Veja o exemplo para SQLite:
conn.close()import sqlite3
def conectar():
return sqlite3.connect('livraria.db')
def criar_tabela():
conn = conectar()
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS livros (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
autor TEXT NOT NULL,
ano INTEGER
)
""")
conn.commit()
conn.close()
def adicionar_livro(titulo, autor, ano):
conn = conectar()
cursor = conn.cursor()
cursor.execute("""
INSERT INTO livros (titulo, autor, ano)
VALUES (?, ?, ?)
""", (titulo, autor, ano))
conn.commit()
conn.close()
def listar_livros():
conn = conectar()
cursor = conn.cursor()
cursor.execute("SELECT * FROM livros")
for livro in cursor.fetchall():
print(livro)
conn.close()
# Chamadas de Função
criar_tabela()
adicionar_livro("Python Avançado", "João", 2023)
listar_livros()
Exercícios para Prática
- Crie uma aplicação que permita gerenciar uma lista de filmes.
- Implemente uma função que exporte dados do banco de dados para um arquivo CSV.
- Adapte o projeto de gerenciamento de livros para usar MySQL ou PostgreSQL.
O que são APIs e por que usá-las?
APIs (Application Programming Interfaces) permitem que diferentes aplicações se comuniquem. Com APIs, você pode acessar dados e funcionalidades de outros serviços, como APIs de redes sociais, serviços financeiros e meteorológicos.
Como Integrar APIs em Python com a Biblioteca Requests
A biblioteca requests
é a ferramenta mais utilizada para consumir APIs em Python. Instale-a com:
pip install requests
Fazendo Requisições
Abaixo, um exemplo de requisição GET:
import requests
response = requests.get('https://jsonplaceholder.typicode.com/posts')
if response.status_code == 200:
dados = response.json()
for post in dados[:5]:
print(f"Título: {post['title']}")
Enviando Dados com POST
novo_post = {
"title": "Novo Post",
"body": "Este é o conteúdo do post.",
"userId": 1
}
response = requests.post('https://jsonplaceholder.typicode.com/posts', json=novo_post)
print(response.json())
Trabalhando com APIs RESTful: Um Exemplo Prático
Vamos combinar manipulação de banco de dados com integração de APIs.
Exemplo: Armazenar Dados de uma API no Banco de Dados
Aqui, buscamos dados de uma API e os armazenamos no SQLite.
import sqlite3
import requests
# Conectar ao banco de dados
conn = sqlite3.connect('meubanco.db')
cursor = conn.cursor()
# Criar tabela de posts
cursor.execute("""
CREATE TABLE IF NOT EXISTS posts (
id INTEGER PRIMARY KEY,
titulo TEXT,
conteudo TEXT,
userId INTEGER
)
""")
conn.commit()
# Requisição à API
response = requests.get('https://jsonplaceholder.typicode.com/posts')
if response.status_code == 200:
posts = response.json()
for post in posts:
cursor.execute("""
INSERT INTO posts (id, titulo, conteudo, userId)
VALUES (?, ?, ?, ?)
""", (post['id'], post['title'], post['body'], post['userId']))
conn.commit()
conn.close()
Dicas de Boas Práticas ao Trabalhar com Bancos de Dados e APIs
- Use variáveis de ambiente: Nunca armazene credenciais de APIs no código.
- Trate erros: Utilize blocos
try-except
para lidar com falhas em conexões. - Evite sobrecarga de requisições: Limite a frequência de chamadas à API.
- Sanitize entradas no banco de dados: Evite SQL Injection usando placeholders.
Conclusão
Neste tutorial, abordamos os fundamentos da manipulação de bancos de dados e integração com APIs em Python, com exemplos práticos e detalhados. Dominar esses conceitos permite que você crie aplicações robustas e dinâmicas, combinando armazenamento de dados e consumo de serviços externos.
Nos próximos tutoriais, exploraremos desenvolvimento web com Python, utilizando frameworks como Flask e Django para criar aplicações web completas. Fique atento!
Lembrando que você pode ler a documentação Oficial do Python para aprender e tirar dúvidas