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 params aceita 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 um Engine do SQLAlchemy no parâmetro con.

  • Gerenciamento de Memória: Para conjuntos de dados massivos, utilize o parâmetro chunksize para ler o resultado da consulta em lotes menores em vez de carregar tudo na memória RAM de uma só vez.

Comentários

Postagens mais visitadas deste blog

Gerando Relatórios em PDF com Python (ReportLab e FPDF)

Python para Computação Quântica: Introdução com Qiskit

C# e Banco de Dados: Como Conectar e Realizar Operações com SQL Server