Introdução
MySQL é um dos bancos de dados relacionais mais populares, amplamente utilizado no desenvolvimento web e em soluções corporativas. Para trabalhar com MySQL em Python, o driver PyMySQL é uma excelente escolha — uma implementação pura em Python do protocolo MySQL. Ele é simples de usar, ativamente mantido e compatível com bibliotecas populares como SQLAlchemy e Pandas.
PyMySQL é um driver para MySQL que permite conectar-se ao banco de dados, executar consultas SQL, gerenciar transações e integrar-se com frameworks web sem configurações complexas. Diferente de outros drivers, o PyMySQL é escrito inteiramente em Python, o que o torna multiplataforma e fácil de instalar.
O que é PyMySQL
PyMySQL é uma biblioteca cliente para Python que implementa o protocolo MySQL Client/Server. Ela fornece uma interface para conectar-se a um servidor MySQL e executar consultas SQL. A biblioteca segue a especificação Python Database API 2.0 (PEP 249), garantindo compatibilidade com outras aplicações Python.
Principais características do PyMySQL
- Python puro: Não requer dependências externas em C/C++
- Compatibilidade: Suporta MySQL versões 5.5 e superiores
- Segurança: Proteção integrada contra injeção SQL
- Desempenho: Otimizado para execução rápida de consultas
- Facilidade de uso: API intuitiva e direta
Instalação e conexão ao MySQL
Instalação
pip install pymysql
Para funcionalidades adicionais, também é recomendado instalar:
pip install pymysql[rsa] # para suporte à autenticação RSA
Conexão ao banco de dados
import pymysql
connection = pymysql.connect(
host='localhost',
user='root',
password='senha',
database='test_db',
port=3306,
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
DictCursor permite obter os resultados como dicionários, em vez de tuplas, tornando o trabalho com dados mais conveniente.
Parâmetros de conexão
| Parâmetro | Descrição | Tipo | Padrão |
|---|---|---|---|
host |
Host do servidor MySQL | str | 'localhost' |
port |
Porta do servidor | int | 3306 |
user |
Nome de usuário | str | None |
password |
Senha | str | None |
database |
Nome do banco de dados | str | None |
charset |
Codificação de caracteres | str | 'utf8mb4' |
autocommit |
Commit automático | bool | False |
cursorclass |
Classe do cursor | class | Cursor |
Criação de banco de dados e tabelas
# Criando banco de dados
with connection.cursor() as cursor:
cursor.execute("CREATE DATABASE IF NOT EXISTS test_db")
# Criando tabela
with connection.cursor() as cursor:
cursor.execute("""
CREATE TABLE IF NOT EXISTS usuarios (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
idade INT,
criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
""")
connection.commit()
Operações CRUD com PyMySQL
Inserindo dados
# Inserindo um registro
with connection