我想让我们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