Search code examples
pythonpandassqlalchemyflask-sqlalchemy

SQLAlchemy ORM conversion to pandas DataFrame


Is there a solution converting a SQLAlchemy <Query object> to a pandas DataFrame?

Pandas has the capability to use pandas.read_sql but this requires use of raw SQL. I have two reasons for wanting to avoid it:

  1. I already have everything using the ORM (a good reason in and of itself) and
  2. I'm using python lists as part of the query, e.g.:

db.session.query(Item).filter(Item.symbol.in_(add_symbols) where Item is my model class and add_symbols is a list). This is the equivalent of SQL SELECT ... from ... WHERE ... IN.

Is anything possible?


Solution

  • Below should work in most cases:

    df = pd.read_sql(query.statement, query.session.bind)
    

    See pandas.read_sql documentation for more information on the parameters.