我正在使用存储过程从 mysql 数据库中获取一些行。
我使用非常基本的语法:
retarr = []
cursor.callproc("employee_get", (-1, -1, -1))
for res in cursor.stored_results():
retarr.append(res.fetchall())
cursor.close()
...
现在。一些数据结果是 unicode 字符串。我在我的数据库中使用 UTF-8 编码字符串。我在连接中使用 charset="utf8" 和 use_unicode=True 。
当我尝试打印任何包含 unicode 字符的捕获数据(整个数据元组)时,就会出现问题。喜欢:
for row in retarr[0]:
print(row)
它会正确打印我捕获的第一行。但第一个没有 unicode 字符。然后是第二个,我得到的只是一个著名的错误:UnicodeEncodeError: 'ascii' codec can't encode character '\u0119' in position 19: ordinal not in range (128). 有什么问题?我相信我缺少一些非常基本的东西。
我使用 Python 3.3.2,标准 mysql 连接器。操作系统。