Solución:
Edición: marzo de 2015
Como se indica a continuación, pandas ahora usa SQLAlchemy para leer desde (read_sql) e insertar en (to_sql) una base de datos. Lo siguiente debería funcionar
import pandas as pd
df = pd.read_sql(sql, cnxn)
Respuesta anterior:
A través de mikebmassey de una pregunta similar.
import pyodbc
import pandas.io.sql as psql
cnxn = pyodbc.connect(connection_info)
cursor = cnxn.cursor()
sql = "SELECT * FROM TABLE"
df = psql.frame_query(sql, cnxn)
cnxn.close()
Aquí está el código más corto que hará el trabajo:
from pandas import DataFrame
df = DataFrame(resoverall.fetchall())
df.columns = resoverall.keys()
Puede ir más elegante y analizar los tipos como en la respuesta de Paul.
Si está utilizando el ORM de SQLAlchemy en lugar del lenguaje de expresión, es posible que desee convertir un objeto de tipo sqlalchemy.orm.query.Query
a un marco de datos de Pandas.
El enfoque más limpio es obtener el SQL generado a partir del atributo de declaración de la consulta y luego ejecutarlo con pandas read_sql()
método. Por ejemplo, comenzando con un objeto de consulta llamado query
:
df = pd.read_sql(query.statement, query.session.bind)