Ваш первый вариант не может быть выполнен точно, если у вас нет столбца, например идентификатора, который поможет вам понять порядок, в котором строки были помещены в таблицу. (РЕДАКТИРОВАТЬ: из ваших прикрепленных комментариев кажется, что у вас есть поле create_at ...)
Таким образом, запрос будет
query = (session.query(database.Manifest)
.filter_by(tracking_number=exception.TrackingNumber)
.order_by(desc(database.Manifest.created_at)))
manifest = query.first()
Если вы этого не сделаете, то вы должны полагаться на свою базу данных, просто возвращая строки в том порядке, в котором они были сначала вставлены с помощью магии, тогда вам нужно будет захватить все из них и взять последний
query = (session.query(database.Manifest)
.filter_by(tracking_number=exception.TrackingNumber))
manifest = query.all()[-1]
И, честно говоря, вы не можете полагаться на свою базу данных, чтобы сделать это ... она, как правило, возвращает их так, как считает самым быстрым из доступных способов.
Что касается второго варианта, который вы запрашиваете, это будет просто
query = (session.query(database.Manifest)
.filter_by(tracking_number=exception.TrackingNumber)
.filter(database.Manifest.date > datetime.date(2011, 1, 1)))
manifest = query.first()