我想讓我們MySQLdb連接到我的MySQL數據庫。當我使用像「fred」這樣的有效mysql用戶名時,一切都按預期工作,但當我嘗試使用有效的mysql unicode用戶名,數據庫或密碼(如「大な」)時失敗。如何使用unicode用戶名,密碼,數據庫使用MySQLdb?
誰知道如何使用帶有可能的unicode字符的MySQLdb?令人驚訝的是,當我使用mysql.connector而不是MySQLdb時,我可以使用我的數據庫,用戶和密碼中的日語字符進行連接(無法使用日語字符測試主機名)。我會很樂意使用mysql.connector,但我有另一個問題(見mysql.connector bug?)
def fix(string):
string = unicode(string) # convert qstring from pyqt ui to unicode string
string = string.encode('utf-8')
return string
try:
db = MySQLdb.connect(host=fix(hostname), user=fix(username), passwd=fix(password), port=int(port), charset="utf8", use_unicode=True)
except MySQLdb.Error, e:
errno = e.args[0]
err = e.args[1]
reply = QtGui.QMessageBox.critical(self, "MySQL Connect Failed", err.decode("utf8"))
return
編輯:我是能夠解決mysql connector bug所以我會用mysql.connector而不是MySQLdb的,但這個問題依然有效。
作爲一個側面說明 - 主機名,顧名思義,不能包含Unicode字符。它們僅限於ASCII字母數字字符和連字符。 – duskwuff
感謝duskwuff ......至少我不必試圖創建那個測試用例。 :) – panofish