0
点赞
收藏
分享

微信扫一扫

【SQLAlchemy 】create_engine 连sql server 中文乱码 解决方案

梯梯笔记 2022-03-17 阅读 156

写给老是卡在读sql server中文数据乱码的自己。

前情提要
数据库里只要存varchar字段就自动 Chinese_PRC_CI_AS,用SQLAlchemy怎么换charset参数都不好使。
在这里插入图片描述
conn = create_engine('mssql+pymssql://xx:xxxx.@localhost:post/db_name?charset=utf8').connect()

conn = create_engine('mssql+pymssql://xx:xxxx.@localhost:post/db_name',connect_args={'charset':'GBK'}).connect()

以上两种方法,换各种字符集都各种不好使…

但是下面的方法可以解决

1、创建一个正常的connection

conn = create_engine('mssql+pymssql://username:password@ip_address:port/db_name').connect()
query = """
        SELECT *
        FROM table;
        """
df = pd.read_sql(query, conn)
conn.close()

2、将读出来的dataframe中的乱码column重新encode decode
例如:现在表是这样的, 我们需要对乱码的column workshopplant 处理一下
在这里插入图片描述

df.workshop = df.workshop.apply(lambda x: x.encode('latin-1').decode('gbk'))

在这里插入图片描述

这样就可以啦~

举报

相关推荐

0 条评论