写给老是卡在读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 workshop
和 plant
处理一下
df.workshop = df.workshop.apply(lambda x: x.encode('latin-1').decode('gbk'))
这样就可以啦~