2015-08-18 1 views
0

À l'origine, le problème consiste à récupérer des documents de la base de données dans le même ordre avec une liste d'ID donnée. Utilisation de SQL brut, je peux le faire comme çaComment joindre une table temporaire dans sqlalchemy

select c.id, c.ctime 
from clusters c 
join (
    values 
     (910453, 5), 
     (910483, 2), 
     (910496, 1), 
     (910503, 4), 
     (910508, 3) 
) as x (id, ordering) on c.id = x.id 
order by x.ordering 

Y at-il un moyen de le faire en utilisant sqlalchemy? En outre, le type de données résultant doit être sqlalchemy QuerySet, donc je ne peux pas utiliser de python trié.

Répondre

0

Utilisez requête follwing: -

select c.id, c.ctime 
from clusters c 
join (
     SELECT (910453 AS id, 5 AS ordering) UNION ALL 
     SELECT (910483, 2) UNION ALL 
     SELECT (910496, 1) UNION ALL 
     SEELCT (910503, 4) UNION ALL 
     SELECT (910508, 3) 
    ) as x on c.id = x.id 
order by x.ordering 
+1

Merci pour la réponse, mais le problème est de faire la même chose en utilisant sqlalchemy, pas SQL brut. –