2012-06-18 22 views
13

Sto sviluppando un'applicazione web abbastanza semplice usando Flask e MySQL.pyMySQL set set di caratteri di collegamento

Sono in difficoltà con unicode. Gli utenti a volte incollano cose che hanno copiato da Word e cadono con le vecchie citazioni intelligenti u'\u201c'.

Un po 'di indagine mostra che la connessione che ho a MySQL sta usando il set di caratteri Latin1 (sembra essere l'impostazione predefinita).

Come è possibile specificare per utilizzare Unicode per la sua connessione?

Sto usando pyMySQL, che pretende di essere un rimpiazzo sostitutivo per MySQLdb. MySQLdb definisce una funzione set_character_set(self, charset) per gli oggetti connection, ma pyMySQL non lo fa (ho un errore se provo).

+0

si potrebbe provare una query prima per ogni connessione che avete affermando 'nomi dei set UTF8' –

risposta

46

L'ho elaborato girando intorno allo pyMySQL source (avevo provato, ma non riuscivo a trovare il posto giusto!).

È possibile specificare quando si crea la connessione:

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

risolto il mio problema.

+2

stavo cercando di usare pymysql con SQLAlchemy, quindi la correzione per me è stato quello di cambiare l'URL per' mysql + pymysql: // nome_utente @ nome_host/nome_database? charset = utf8mb4'; questa risposta ha aiutato molto! –

Problemi correlati