From dd668febe7368de91a4ef8be365b981e5cf472a8 Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Fri, 6 May 2011 12:40:28 +0300 Subject: [PATCH] Make id lookup util.get use query.get, avoiding queries for dupe lookups --- pokedex/db/util.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pokedex/db/util.py b/pokedex/db/util.py index 93d9127..6c26d67 100644 --- a/pokedex/db/util.py +++ b/pokedex/db/util.py @@ -7,6 +7,7 @@ of pokemon, and filtering/ordering by name. from sqlalchemy.orm import aliased from sqlalchemy.sql.expression import func from sqlalchemy.sql.functions import coalesce +from sqlalchemy.orm.exc import NoResultFound from pokedex.db import tables @@ -40,7 +41,13 @@ def get(session, table, identifier=None, name=None, id=None, language=None): query = filter_name(query, table, name, language) if id is not None: - query = query.filter_by(id=id) + # ASSUMPTION: id is the primary key of the table. + result = query.get(id) + if result is None: + # Keep the API + raise NoResultFound + else: + return result return query.one()