Я не могу правильно напечатать символ из MySQL с pyodbc

0

Я использую 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

  • 0
    Строка подключения показывает, что вы используете ANSI-версию драйвера MySQL ODBC. Если вы хотите работать с текстом в кодировке UTF-8, вам следует использовать UNICODE-версию драйвера.
  • 0
    Большое спасибо, Горд. Я поместил строку подключения, которую я нашел в Интернете, но не обнаружил, что есть тип ANSI и тип Unicode. После смены драйвера на Unicode я могу напечатать то, что хочу.
Теги:
jupyter-notebook
pyodbc

1 ответ

0
Лучший ответ

Строка подключения показывает, что вы используете версию ANSI MySQL ODBC. Если вы хотите работать с кодированным текстом UTF-8, вы должны использовать версию драйвера UNICODE.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню