我无法使用 pyodbc 正确打印 MySQL 中的字符
I cannot print correctly character from MySQL with pyodbc
我使用 pyodbc 连接 MySQL,并成功将一些中文数据放入 MySQL 但我无法打印出正确的字符
In[1]: import pyodbc
cn = pyodbc.connect("DRIVER={MySQL ODBC 8.0 ANSI Driver}; SERVER=localhost; PORT=3306;DATABASE=db; UID=root; PASSWORD=******;OPTION=3;CHARSET=UTF8;")
cn.setencoding(encoding='utf-8')
cursor = cn.cursor()
In[2]: cursor.execute("insert into tc_lite values(2018, 05 ,06 ,0 ,0 ,'中文','測試',127, 110)")
cursor.execute("select * from tc_lite;")
cursor.fetchall()
out[2]: [(2018, 5, 6, 0, 0, '銝剜?', '皜祈岫', 127.0, 110.0)]
但是当我使用pymysql连接时,它可以显示正确的字符
In[3]: conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='******',db="trydb", charset='utf8')
cursor = conn.cursor()
In[4]: cursor.execute("select * from tc_lite;")
cursor.fetchall()
out[4]: ((2018, 5, 6, 0, 0, '中文', '測試', 127.0, 110.0),)
如果我想使用 pyodbc,如何修复它以显示像 pymysql 的输出
我在 win7,python 3.6.1,pyodbc 4.0.16,Jupyter Notebook 5.5.0
您的连接字符串表明您使用的是 MySQL ODBC 驱动程序的 ANSI 版本。如果您想使用 UTF-8 编码的文本,您应该使用 UNICODE 版本的驱动程序。
我使用 pyodbc 连接 MySQL,并成功将一些中文数据放入 MySQL 但我无法打印出正确的字符
In[1]: import pyodbc
cn = pyodbc.connect("DRIVER={MySQL ODBC 8.0 ANSI Driver}; SERVER=localhost; PORT=3306;DATABASE=db; UID=root; PASSWORD=******;OPTION=3;CHARSET=UTF8;")
cn.setencoding(encoding='utf-8')
cursor = cn.cursor()
In[2]: cursor.execute("insert into tc_lite values(2018, 05 ,06 ,0 ,0 ,'中文','測試',127, 110)")
cursor.execute("select * from tc_lite;")
cursor.fetchall()
out[2]: [(2018, 5, 6, 0, 0, '銝剜?', '皜祈岫', 127.0, 110.0)]
但是当我使用pymysql连接时,它可以显示正确的字符
In[3]: conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='******',db="trydb", charset='utf8')
cursor = conn.cursor()
In[4]: cursor.execute("select * from tc_lite;")
cursor.fetchall()
out[4]: ((2018, 5, 6, 0, 0, '中文', '測試', 127.0, 110.0),)
如果我想使用 pyodbc,如何修复它以显示像 pymysql 的输出
我在 win7,python 3.6.1,pyodbc 4.0.16,Jupyter Notebook 5.5.0
您的连接字符串表明您使用的是 MySQL ODBC 驱动程序的 ANSI 版本。如果您想使用 UTF-8 编码的文本,您应该使用 UNICODE 版本的驱动程序。