爲了某些目的,我必須在數據庫中將字段歸類從utf8_unicode_ci
更改爲utf8_bin
。事實證明,這種變化導致了python數據類型的變化。mysql-python整理問題:如何強制unicode數據類型?
問題是如何強制mysql-python將unicode對象返回給python。
這裏是一個示例,演示問題(顯式的字符集力量use_unicode = 1):
>>> con = MySQLdb.connect(..., charset='utf8')
>>> c = c.cursor()
>>> c.execute('SELECT %s COLLATE utf8_bin', u'м')
1L
>>> c.fetchone()
('\xd0\xbc',)
>>> c.description
(("'\xd0\xbc' COLLATE utf8_bin", 253, 2, 3, 3, 31, 0),)
>>> c.execute('SELECT %s COLLATE utf8_unicode_ci', u'м')
1L
>>> c.fetchone()
(u'\u043c',)
>>> c.description
(("'\xd0\xbc' COLLATE utf8_unicode_ci", 253, 2, 3, 3, 31, 0),)
在我的數據庫中的字段VARCHAR類型的,但變化後,他們表現得像二進制文件,是不是有什麼我想要。
'SET NAMES utf8'? – Robus 2012-03-01 19:14:46
@Robus,'charset = utf8'完全一樣 – newtover 2012-03-01 19:18:40
不確定,因此爲什麼我只發佈它作爲評論:)我相信實際上'解碼'變量python-side可能需要更少的努力比與messing – Robus 2012-03-01 19:21:08