2012-06-18 13 views
13

Zajmuję się dość prostą aplikacją internetową za pomocą Flask i MySQL.Zestaw znaków połączenia zestawowego pyMySQL

Walczę z Unikodem. Użytkownicy czasami wklejają elementy skopiowane z programu Word i przewracają się ze starymi inteligentnymi cytatami u'\u201c'.

Trochę badań pokazuje, że połączenie, które mam do MySQL, używa zestawu znaków Latin1 (wydaje się być domyślnym).

Jak mogę określić, aby korzystał z połączenia Unicode?

Używam pyMySQL, który ma być zamiennikiem dla MySQLdb. MySQLdb definiuje funkcję set_character_set(self, charset) dla obiektów connection, ale pyMySQL nie (pojawia się błąd, jeśli próbuję).

+0

Możesz spróbować surowego zapytania dla każdego połączenia, które określiłeś 'SET NAMES UTF8' –

Odpowiedz

46

Rozwinąłem to, szturchając się w pyMySQL source (próbowałem, ale nie mogłem znaleźć odpowiedniego miejsca!).

Można określić ją podczas tworzenia połączenia:

conn = pymysql.connect(host='localhost', 
         user='username', 
         passwd='password', 
         db='database', 
         charset='utf8') 

rozwiązać mój problem.

+2

Próbowałem użyć pymysql z sqlalchemy, więc poprawka dla mnie polegała na zmianie adresu URL na' mysql + pymysql: // nazwa_użytkownika @ nazwa_hosta/database_name? charset = utf8mb4'; ta odpowiedź bardzo pomogła! –

Powiązane problemy