Pour trier un générateur, pas d'autre moyen que de le transformer en liste, vu que le tri à la volée est impossible. Tu peux utiliser sorted par exemple.
Dans le cas où tu n'as pas besoin de tous les éléments, mais juste des k premiers dans l'ordre, il est possible d'utiliser heapq.nlargest() par exemple.
EDIT : Vu ton code, persons_db est déja une liste, alors pourquoi ne pas la trier avant de la transformer en générateur ? Ça peut être rendu optionnel si nécessaire.
Aussi, si tes données proviennent d'une DB, peut-être est-il judicieux de trier les données directement au niveau de la DB.