我正在尝试将我们的 MySQLdb 连接到我的 MySQL 数据库。当我使用像“fred”这样的有效 mysql 用户名时,一切都按预期工作,但是当我尝试使用像“大な”这样的有效 mysql unicode 用户名、数据库或密码时,一切都会失败。
谁知道如何将 MySQLdb 与可能的 unicode 字符一起使用?
令人惊讶的是,当我使用 mysql.connector 而不是 MySQLdb 时,我可以很好地连接我的数据库、用户和密码中的日文字符(还无法使用日文字符测试主机名)。我很乐意使用 mysql.connector,但我还有另一个问题(请参阅mysql.connector 错误?)
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 连接器错误,所以我将使用 mysql.connector 而不是 MySQLdb,但这个问题仍然有效。