2012-06-18 12 views
13

Flask ve MySQL kullanarak oldukça basit bir web uygulaması geliştiriyorum.pyMySQL set bağlantı karakter seti

Unicode ile uğraşıyorum. Kullanıcılar bazen Word'den kopyaladıkları şeyleri yapıştırır ve eski akıllı tırnaklar u'\u201c' ile birlikte düşer.

Biraz araştırma, MySQL'e olan bağlantının Latin1 karakter kümesini kullanacağını gösteriyor (varsayılan olarak görünüyor).

Bağlantı için unicode kullanmasını nasıl belirleyebilirim?

PyMySQL kullanıyorum; bu, MySQLdb için bir drop-in yedeği olduğu anlamına gelir. MySQLdb, connection nesneleri için set_character_set(self, charset) işlevini tanımlar, ancak pyMySQL bunu yapmaz (denediğimde bir hata alıyorum).

+0

"SET NAMES UTF8" –

cevap

46

pyMySQL source (Ben denedim ama doğru yer bulamadı!) Etrafında alay ederek çalıştı.

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

sorunumu Çözüldü: bağlantıyı oluştururken

Bunu belirtebilirsiniz.

+2

'u belirttiğiniz her bağlantı için bir ham sorguyu deneyebilirsiniz. Pymysql'i sqlalchemy ile kullanmaya çalışıyorum, bu yüzden benim için düzeltmemek url'yi mysql + pymysql: // user_name @ olarak değiştirmekti host_name/database_name? charset = utf8mb4'; Bu cevap çok yardımcı oldu! –