Bem, dentro de uma hora de postar minha pergunta, eu já descobri. Talvez eu devesse ter pesquisado um pouco mais antes de postar.
O problema é que o sqlalchemy precisa ser configurado para usar a codificação utf-8. A solução no código acima seria alterar a linha 3 para:
engine = create_engine('mysql://root:@localhost/testdb?charset=utf8', encoding = 'utf-8')