PyMySQL和Pandas为日文字符返回乱码列

时间:2017-07-26 00:19:33

标签: python-3.x pandas paramiko pymysql

我正在尝试从数据库中读取一些表。当数据库只包含数字和英文字符时,我得到数据OK但数据库中的其他表包含一些日文字符。下载这些表时,带有日语字符的列会显示所有问号:???????????

我的代码:

import pymysql
from sshtunnel import SSHTunnelForwarder   
with SSHTunnelForwarder(
        (ssh_host, ssh_port),
        ssh_username=ssh_user,
        ssh_pkey=mypkey,
        remote_bind_address=(sql_ip, sql_port)) as tunnel:
        conn = pymysql.connect(host='127.0.0.1', user=sql_username,
                passwd=sql_password, 
                port=tunnel.local_bind_port,db=db,unicode_results=True)

        #data = pd.read_sql_query(query, conn)
        data = pd.read_sql_query(query_2, conn,)

我曾尝试pd.set_option('display.unicode.east_asian_width', True)之前曾为我工作,但在这里似乎并没有帮助。

1 个答案:

答案 0 :(得分:0)

我实际上解决了我的问题,对于下面感兴趣的人是答案: 我只需要将charset='ujis'添加到我的代码中。现在它没有乱码。

conn = pymysql.connect(host='127.0.0.1', user=sql_username,
                passwd=sql_password, 
                port=tunnel.local_bind_port,db=db,charset='uji')