Finalmente encontrei a resposta ao descobrir que um script diferente que eu executei com sucesso muitas vezes não estava mais funcionando.
Eu mudei o agrupamento no meu banco de dados de utf8_general_ci para utf8_bin. Há um bug no MySQLdb 1.2.3 que faz com que as strings utf8_bin não sejam reconhecidas como texto, então a conversão unicode não está acontecendo. Isso foi corrigido no MySQLdb 1.2.4.
https://sourceforge.net/p/mysql-python/bugs/289/