我有一个utf8编码的MySQL数据库。它包含一个值为“sauté”的行。注意e上的重音。
当我使用Django应用程序选择此数据时,它会正确检测到é。但是,当我作为Python程序执行它时,这些信息(特殊e)似乎丢失了。
我尝试了各种编码和解码组合以及“来自将来导入unicode_literals”并在sauté字符串前加上“u”并将u放在查询字符串前面。没运气。如何从我的数据库(使用Python)中正确地获取此信息并对其进行测试?
# Connection when excute as .py: (Django is usual in settings.py)
cursor = MySQLdb.connect(host='<xxx>',user="<xxx>", passwd="<xxx>", db="<xxx>",
unix_socket = 'path/mysql.sock'
).cursor()
# Same code in Django and Python execution:
cursor.execute(select line from my_table where id = 27)
results = cursor.fetchall()
for r in results:
line = r[0]
if re.search("sauté", line):
do_something() # Should get here, but only with Django
答案 0 :(得分:0)
感谢JD Vangsness(在评论中)的答案。
我需要添加charset =&#39; utf8&#39;连接参数。
requests
然后我还需要将比较字符串设为unicode:
cursor = MySQLdb.connect(host='<xxx>',user="<xxx>", charset='utf8', passwd="<xxx>", db="<xxx>", unix_socket = 'path/mysql.sock').cursor()