Eh bien, moins d'une heure après avoir posté ma question, je l'ai déjà compris. J'aurais peut-être dû faire un peu plus de recherches avant de poster.
Le problème est que sqlalchemy doit être configuré pour utiliser l'encodage utf-8. La solution dans le code ci-dessus serait de changer la ligne 3 en :
engine = create_engine('mysql://root:@localhost/testdb?charset=utf8', encoding = 'utf-8')