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

查询代码

import pandas as pd
import numpy as np
import 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')

猜你喜欢

转载自blog.csdn.net/u011799895/article/details/78707655