Ce sujet n'a pas été abordé depuis un moment, ici ou ailleurs. Existe-t-il une solution pour convertir un SQLAlchemy <Query object>
en un pandas DataFrame?
Pandas a la capacité d'utiliser pandas.read_sql
mais cela nécessite l'utilisation de SQL brut. J'ai deux raisons de vouloir l'éviter: 1) J'ai déjà tout utilisant l'ORM (une bonne raison en soi) et 2) J'utilise des listes python dans le cadre de la requête (par exemple: .db.session.query(Item).filter(Item.symbol.in_(add_symbols)
où Item
est ma classe de modèle et add_symbols
est une liste). C'est l'équivalent de SQL SELECT ... from ... WHERE ... IN
.
Est-ce que quelque chose est possible?
df = pd.read_sql(query, query.bind)
quandquery
est unsqlalchemy.sql.selectable.Select
. Sinon, je l'ai'Select' object has no attribute 'session'
.con
paramètre, qui peut être leengine
ouconnection string
Juste pour rendre cela plus clair pour les programmeurs pandas novices, voici un exemple concret,
Ici, nous sélectionnons une plainte dans la table des plaintes (le modèle sqlalchemy est une plainte) avec id = 2
la source
.statement
-on?La solution sélectionnée n'a pas fonctionné pour moi, car je continuais à recevoir l'erreur
J'ai trouvé ce qui suit fonctionné:
la source
Si vous souhaitez compiler une requête avec des paramètres et des arguments spécifiques au dialecte, utilisez quelque chose comme ceci:
la source
la source
select
indf_query = select([DailyTrendsTable])
est manquante.from sqlalchemy import select