最近在研究 python 串聯 mysql 的方式, 之前一直抓 MySQL-python-1.2.3c1.tar.gz
回來安裝, 都安裝不起來,結果同事告知要去抓取 windows 下 可以執行的檔案, 所以去抓了
MySQL-python-1.2.2.win32-py2.5.exe 回來安裝後, python 就可以與 mysql 連結了.
可以連結後,想說要顯示mysql 內的utf-8字元,找了很久,找不到,後來找到要在connect中加入utf-8的參數設定,
如下:
db = MySQLdb.connect(user='username', db='mydbname', passwd='userpassword', host='127.0.0.1', charset='utf8')
之後可以顯示utf-8的字元了, 但是卻顯示 (u'\u4efb\u7ea2') 這樣的字,結果查詢後是因為顯示rows的資料才這樣,將 print row 改成 print row[0] 就可以了.
之後可以顯示後,又發現沒辦法顯示utf-8的中文簡體字,所以又找了一下,要將 print row[0] 改成
print row[0].encode('utf8') 才可以. 所以,這是要讓它顯示 utf-8 中文的過程
PS: 使用 python 2.5.4, mysql 5.1
測試程式如下:
#encoding=utf8
#-*- coding: utf-8 -*-
import MySQLdb
db = MySQLdb.connect(user='xxx', db='MyDb', passwd='pwd', host='127.0.0.1', charset='utf8')
cursor = db.cursor()
#cursor.execute('set names utf8;')
#cursor.execute('set character set utf8;')
#cursor.execute('set character_set_connection=utf8;')
cursor.execute('SELECT u_name as name FROM user ORDER BY user_id')
#names = [unicode(row[0]) for row in cursor.fetchall()]
#print names
results = cursor.fetchall()
for row in results:
x = row[0]
#print "%s" % unicode(x)
print x.encode('utf8')
db.close()
沒有留言:
張貼留言