Эта тема давно не обсуждалась ни здесь, ни где-либо еще. Есть ли решение, преобразовывающее SQLAlchemy <Query object>
в pandas DataFrame?
Pandas имеет возможность использовать, pandas.read_sql
но для этого требуется необработанный SQL. У меня есть две причины, по которым я хочу этого избежать: 1) у меня уже есть все, использующее ORM (хорошая причина сама по себе) и 2) я использую списки python как часть запроса (например: .db.session.query(Item).filter(Item.symbol.in_(add_symbols)
где Item
мой класс модели и add_symbols
это список). Это эквивалент SQL SELECT ... from ... WHERE ... IN
.
Возможно ли что-нибудь?
df = pd.read_sql(query, query.bind)
когдаquery
этоsqlalchemy.sql.selectable.Select
. В противном случае я получил'Select' object has no attribute 'session'
.con
engine
connection string
Чтобы сделать это более понятным для начинающих программистов pandas, вот конкретный пример,
Здесь мы выбираем жалобу из таблицы жалоб (модель sqlalchemy - жалоба) с id = 2
источник
.statement
делать?Выбранное решение у меня не сработало, так как я все время получал ошибку
Я обнаружил, что сработало следующее:
источник
Если вы хотите скомпилировать запрос с параметрами и диалектом конкретных аргументов, используйте что-то вроде этого:
источник
источник
select
indf_query = select([DailyTrendsTable])
отсутствует.from sqlalchemy import select
Для полноты: в качестве альтернативы функции Pandas
read_sql_query()
вы также можете использовать функцию Pandas-DataFramefrom_records()
для преобразования файлаstructured or record ndarray to DataFrame
.Это пригодится, если вы, например, уже выполнили запрос в SQLAlchemy и у вас уже есть результаты:
источник