Detta verkar vara ett fall av dubbelkodning; Jag har inte mycket erfarenhet av Python, men försök att justera MySQL-anslutningsinställningarna enligt rådet på http://tahpot.blogspot.com/2005/06/mysql-and-python-and-unicode.html
Det jag gissar att det händer är att anslutningen är latin1, så MySQL försöker koda strängen igen innan lagring till UTF-8-fältet. Koden där, speciellt denna bit:
är förmodligen vad du vill.