Windows下使用python pymysql查询中文表头MySQL表

来源:互联网 发布:windows7 软件中文乱码 编辑:程序博客网 时间:2024/06/05 16:26

查询代码

import pandas as pdimport numpy as npimport pymysql# 创建连接cont = pymysql.connect(host='localhost', user='username', password='password', db='database')# 执行sql语句try:    with cont.cursor() as cursor:        sql="select * from tablebame where 时间 > '2017-08-20 00:00:00'"        cursor.execute(sql)        result=cursor.fetchall()finally:    cont.close()#转换成DataFrame格式result = np.array(result)data = pd.DataFrame(result) data.head()

因为数据库中表列明为中文名称,报错:

Traceback (most recent call last):  File "<stdin>", line 5, in <module>  File "D:\Anaconda3\lib\site-packages\pymysql\cursors.py", line 166, in execute    result = self._query(query)  File "D:\Anaconda3\lib\site-packages\pymysql\cursors.py", line 322, in _query    conn.query(q)  File "D:\Anaconda3\lib\site-packages\pymysql\connections.py", line 854, in query    sql = sql.encode(self.encoding, 'surrogateescape')UnicodeEncodeError: 'latin-1' codec can't encode characters in position 48-49: ordinal not in range(256)

创建连接时设置charset=’utf8’属性即可

# 创建连接cont = pymysql.connect(host='localhost', user='root', password='wdl095411', db='cement_data', charset = 'utf8')