1. Por Que Usar Banco de Dados com Python?
Ao desenvolver aplicações, é comum precisar armazenar, recuperar e manipular dados de forma eficiente. Usar um banco de dados oferece uma maneira estruturada de fazer isso. Python oferece suporte para diversos tipos de bancos de dados, como SQLite, MySQL e PostgreSQL, facilitando o gerenciamento de grandes volumes de dados. Além disso, a capacidade de integrar bancos de dados com Python permite o desenvolvimento de aplicações complexas de forma rápida e escalável.
2. Conectando-se a um Banco de Dados Relacional
Existem várias bibliotecas que permitem a conexão de Python com bancos de dados. Para este artigo, utilizaremos o sqlite3
, que é embutido no Python, e o mysql-connector-python
, uma biblioteca popular para trabalhar com MySQL. Vamos começar com o SQLite, um banco de dados leve e ideal para projetos menores ou testes.
2.1. Usando SQLite
O SQLite é integrado ao Python, então não é necessário instalar bibliotecas externas. Vamos ver como conectar-se a um banco de dados SQLite e realizar operações básicas.
# Exemplo de conexão com SQLite
import sqlite3
# Conectando ao banco de dados (ou criando um novo se não existir)
conexao = sqlite3.connect('meu_banco.db')
# Criando um cursor para executar comandos SQL
cursor = conexao.cursor()
# Criando uma tabela
cursor.execute('''CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY,
nome TEXT,
idade INTEGER
)''')
# Inserindo um registro
cursor.execute("INSERT INTO usuarios (nome, idade) VALUES (?, ?)", ('Ana', 28))
# Confirmando a transação
conexao.commit()
# Fechando a conexão
conexao.close()
Este exemplo cria uma tabela de usuários no banco de dados meu_banco.db
e insere um registro. O método commit()
é usado para salvar as alterações no banco de dados, e close()
encerra a conexão.
2.2. Usando MySQL
Para conectar Python a um banco de dados MySQL, primeiro você precisa instalar o pacote mysql-connector-python
.
# Instalando o conector MySQL
pip install mysql-connector-python
# Exemplo de conexão com MySQL
import mysql.connector
# Conectando ao banco de dados MySQL
conexao = mysql.connector.connect(
host="localhost",
user="root",
password="minhasenha",
database="meu_banco"
)
cursor = conexao.cursor()
# Criando uma tabela
cursor.execute('''CREATE TABLE IF NOT EXISTS clientes (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(255),
email VARCHAR(255)
)''')
# Inserindo um registro
cursor.execute("INSERT INTO clientes (nome, email) VALUES (%s, %s)", ('Carlos', 'carlos@example.com'))
# Confirmando a transação
conexao.commit()
# Fechando a conexão
conexao.close()
O MySQL é ideal para projetos de maior escala, e com o mysql-connector-python
, você pode gerenciar tabelas, inserir dados e realizar consultas SQL de forma eficiente.
3. Consultando e Manipulando Dados
Uma vez que o banco de dados esteja configurado, você precisará consultar os dados e realizar operações como atualização e exclusão. Veja como realizar essas operações usando o SQLite.
3.1. Consultando Dados
# Consultando registros
conexao = sqlite3.connect('meu_banco.db')
cursor = conexao.cursor()
cursor.execute("SELECT * FROM usuarios")
usuarios = cursor.fetchall()
for usuario in usuarios:
print(usuario)
conexao.close()
O método fetchall()
retorna todos os registros da consulta SQL. Se você quiser apenas um registro, pode usar fetchone()
.
3.2. Atualizando e Excluindo Dados
# Atualizando um registro
conexao = sqlite3.connect('meu_banco.db')
cursor = conexao.cursor()
cursor.execute("UPDATE usuarios SET idade = ? WHERE nome = ?", (29, 'Ana'))
conexao.commit()
# Excluindo um registro
cursor.execute("DELETE FROM usuarios WHERE nome = ?", ('Ana',))
conexao.commit()
conexao.close()
Atualizar e excluir dados no banco é feito usando comandos SQL padrão, seguidos pelo método commit()
para aplicar as mudanças no banco de dados.
4. Usando ORM com SQLAlchemy
Para quem deseja uma abordagem mais abstrata, o SQLAlchemy é uma biblioteca que oferece um mapeamento objeto-relacional (ORM), facilitando o trabalho com bancos de dados sem precisar escrever SQL diretamente.
# Instalando SQLAlchemy
pip install sqlalchemy
# Exemplo básico com SQLAlchemy
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# Configurando o banco de dados
engine = create_engine('sqlite:///meu_banco_orm.db')
Base = declarative_base()
# Definindo uma classe que mapeia para uma tabela
class Usuario(Base):
__tablename__ = 'usuarios'
id = Column(Integer, primary_key=True)
nome = Column(String)
idade = Column(Integer)
# Criando as tabelas no banco de dados
Base.metadata.create_all(engine)
# Criando uma sessão para interagir com o banco
Session = sessionmaker(bind=engine)
session = Session()
# Inserindo um registro
novo_usuario = Usuario(nome='Maria', idade=32)
session.add(novo_usuario)
session.commit()
# Consultando registros
usuarios = session.query(Usuario).all()
for usuario in usuarios:
print(usuario.nome, usuario.idade)
Com o SQLAlchemy, você pode mapear classes Python diretamente para tabelas no banco de dados, tornando o código mais legível e fácil de manter.
Conclusão
Trabalhar com bancos de dados em Python é uma tarefa simples e eficiente, graças à variedade de bibliotecas disponíveis. Desde a simplicidade do SQLite até a robustez do MySQL, você pode gerenciar dados facilmente, realizar consultas SQL e até utilizar ORMs como SQLAlchemy para tornar o desenvolvimento mais ágil. Escolha a abordagem que melhor se adapta ao seu projeto e comece a integrar bancos de dados com Python de forma eficiente.