羽中飞人 2023-03-05 13:49 采纳率: 48.1%
浏览 82
已结题

pymssql读取mysql数据库乱码问题

pymssql读取mysql数据库乱码问题
用的字符窜,要么结果是乱码,要么没得乱码,但某些列是空值
有懂的,我发代码给你们,帮忙解决一下

com = pymssql.connect(server='', user='', password='@123#*', database='hydee_dxt')
cursor = com.cursor()
sql = f"""select warename,wareid,barcode,warespec,producer,advsaleprice from {table[0]}"""
cursor.execute(sql)
res = cursor.fetchall()
col = [i[0] for i in cursor.description]
df = pd.DataFrame(res, columns=col).apply(
                        lambda x: x.astype(str).str.encode('utf8').str.decode('cp1250'))
    print(df)
  • 写回答

6条回答 默认 最新

  • 「已注销」 2023-03-05 14:02
    关注

    “Devil组”引证GPT后的撰写:

    • 这种编码转换可能导致乱码问题,因为如果编码不一致,则可能会出现字符集转换错误。

    为了解决这个问题,可以尝试以下方法:

    在连接MySQL时指定字符集为utf8。例如:

    com = pymssql.connect(server='', user='', password='@123#*', database='hydee_dxt', charset='utf8')
    
    

    将查询结果直接转换为DataFrame,不进行编码转换。例如:

    df = pd.DataFrame(res, columns=col)
    
    

    如果MySQL数据库中存储的是中文字符,您可以将cp1250改为gbk。例如:

    df = pd.DataFrame(res, columns=col).apply(lambda x: x.astype(str).str.encode('utf8').str.decode('gbk'))
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月6日
  • 创建了问题 3月5日