2016-02-10 11 views
1

У меня есть список имен команд. Для каждого имени команды в списке я хочу получить строку из базы данных, но хочу сделать только один вызов в базе данных, а список объектов sql alchemy должен сохранить порядок исходного списка. Я буду иметь дублированные имена в исходном списке.SQLAlchemy - Получить результаты запроса в том же порядке, что и в разделе IN

мне нужно что-то вроде этого, но работа (запрос я делаю, очевидно, не работаю, так как он возвращает весь заказанные по идентификатору)

teams_names = ['Liverpool', 'Arsenal', 'Utd', 'Liverpool'] 
Session.query(Team).filter(Team.name.in_(teams_names)).all() 
teams_sa_obj = [#sa_liverpool, #sa_arsenal, #sa_utd, #sa_liverpool] 
+0

Я с postgres. Я был бы в порядке с спецификой postgres. – FranGoitia

ответ

3

Я обычно делаю переназначение в Python. Идея заключается в том, что вы строите карту имя для Team объектов, то вы смотрите их в то время как итерация первоначального списка:

q = Session.query(Team).filter(Team.name.in_(teams_names)) 
team_map = {t.name: t for t in q} 
teams = [team_map[n] for n in teams_names] 

Есть SQL стороне решения, но это как-то неудобно делать с SQLAlchemy ,

Смежные вопросы