Alla fine ho trovato la risposta quando ho scoperto che uno script diverso che avevo eseguito con successo molte volte non funzionava più.
Avevo cambiato le regole di confronto nel mio database da utf8_general_ci a utf8_bin. C'è un bug in MySQLdb 1.2.3 che fa sì che le stringhe utf8_bin non vengano riconosciute come testo, quindi la conversione unicode non sta avvenendo. Questo è stato risolto in MySQLdb 1.2.4.
https://sourceforge.net/p/mysql-python/bugs/289/