Como Converter Consultas SQL em DataFrames Pandas com read_sql_query()
Como Converter Consultas SQL em DataFrames Pandas com read_sql_query()
A função
pd.read_sql_query() do Pandas permite executar uma instrução SQL em um banco de dados e carregar o conjunto de resultados diretamente em um DataFrame. Essa abordagem elimina a necessidade de iterar manualmente sobre cursores ou converter listas de tuplas, otimizando a ingestão de dados em pipelines de análise e ciência de dados.Python
import sqlite3
import pandas as pd
# Conecta ao banco de dados (exemplo usando SQLite em memória)
conn = sqlite3.connect(':memory:')
# Prepara dados de teste na tabela 'vendas'
conn.execute('''
CREATE TABLE vendas (
id INTEGER PRIMARY KEY,
produto TEXT,
valor REAL,
data TEXT
)
''')
conn.executemany(
'INSERT INTO vendas (produto, valor, data) VALUES (?, ?, ?)',
[('Teclado', 250.00, '2026-03-10'), ('Mouse', 120.50, '2026-03-11')]
)
conn.commit()
# -----------------------------------------------------------------------------
# Ingestão direta da consulta SQL para DataFrame Pandas
# -----------------------------------------------------------------------------
query = '''
SELECT produto, valor
FROM vendas
WHERE valor > ?
'''
# Executa a query e carrega os dados diretamente no DataFrame
df = pd.read_sql_query(sql=query, con=conn, params=(150.00,))
# Exibe o DataFrame resultante
print(df)
# Fecha a conexão após a leitura
conn.close()
- Integração Nativa de Tipos: O Pandas infere automaticamente os tipos de dados das colunas do banco de dados (inteiros, floats, strings) ao mapear a estrutura para a tabela do DataFrame.
- Suporte a Parâmetros Seguros: O argumento
paramsaceita tuplas ou dicionários para a passagem de variáveis parametrizadas, prevenindo falhas de SQL Injection. - Compatibilidade com SQLAlchemy: Embora funcione diretamente com conexões
sqlite3, em ambientes de produção com PostgreSQL ou MySQL é recomendável passar umEnginedo SQLAlchemy no parâmetrocon. - Gerenciamento de Memória: Para conjuntos de dados massivos, utilize o parâmetro
chunksizepara ler o resultado da consulta em lotes menores em vez de carregar tudo na memória RAM de uma só vez.

Comentários
Postar um comentário