Two great tastes that taste great together.
Use RedPanda to add simple pandas integration into your declarative models.
pip install redpanda
Create a session from a SQLAlchemy engine:
import redpanda
engine = redpanda.create_engine("sqlite://")
# => Engine(sqlite://)
Session = redpanda.orm.sessionmaker(bind=engine)
session = Session()
# => <sqlalchemy.orm.session.Session>
Use the frame()
method of RedPanda queries to return a DataFrame representation of the results instead of a collection of models.
query = session.query(MyModel)
# => <redpanda.orm.Query>
query.frame()
# => <pandas.DataFrame>
The frame()
method that wraps the pandas.read_sql()
function into a dialect-agnostic class-method for declarative SQLAlchemy models and can accept the same keyword arguments as pandas.read_sql()
:
query = session.query(MyModel).filter_by(my_attr="my_val")
query.frame(index_col="time")
Additionally, a within()
method is added to SQLAlchemy's InstrumentedAttribute class that accepts a pandas Index object:
index = pandas.period_range("2016-11-01", "2016-11-30", freq="W")
query = session.query(MyModel).filter(MyModel.timestamp.within(index))