Je dois interroger ma base de données et renvoyer le résultat en appliquant une partie distincte sur la seule partie de la date du champ DateTime.
Mon code est le suivant: p>
Query error - {'error': ProgrammingError('(psycopg2.errors.InvalidColumnReference) SELECT DISTINCT ON expressions must match initial ORDER BY expressions\nLINE 2: FROM (SELECT DISTINCT ON (CAST(tenant_resson.capture.capture...\n ^\n',)
3 Réponses :
Je ne connais pas sqlalchemy code> mais cette requête résultante fonctionne comme vous attendez. S'il vous plaît noter le distinct sur.
Peut-être qu'il y a un moyen dans
sqlalchemy code> pour exécuter des requêtes paramétrées non triviales? Cela vous donnerait la prestation supplémentaire de pouvoir tester et optimiser la requête initiale.
SELECT DISTINCT ON (CAST(tenant_resson.capture.capture_datetime AS DATE))
CAST(tenant_resson.capture.capture_datetime AS DATE) AS event_date,
tenant_resson.capture.tags -> %(tags_1)s AS visibility
FROM tenant_resson.capture
WHERE tenant_resson.capture.field_id = %(field_id_1)s;
En fait, je cherche la requête Sqlalchemy.
La requête postée par @ Stefanov.sm est correcte. En termes SQLalchemy, il serait voir le docs pour plus d'informations p> p>
Je devais ajouter de la commande_by à ma requête. Maintenant, cela fonctionne bien.
query = session.query( cast(Capture.capture_datetime, Date).label('event_date'), Capture.tags['visibility'].label('visibility') ).filter(Capture.field_id == parse_uuid(field_id)) \ .distinct(cast(Capture.capture_datetime, Date)) \ .order_by(cast(Capture.capture_datetime, Date).desc())