提示:这里简述项目相关背景:
python操作sql server数据库
问题描述
提示:这里描述项目中遇到的问题:
python 读取数据库时遇到中文乱码
import pymssql
conn = pymssql.connect(server="xxx",user="xxx",password="xxx",database="xxx",charset='utf8')
##################################
# 输出
"""
IndustryTopicJson
0 [{"IndustryName":"ÒµÎñ¸úµ¥¾Àí","cid":393814,"...
1 [{"IndustryName":"·þ×°·ÄÖ¯ÖʼìÔ±(QA/QC)","cid...
2 [{"IndustryName":"Êг¡/ÓªÏú/ÍØÕ¹Ö÷¹Ü","cid":...
3 [{"IndustryName":"½»»¥Éè¼ÆÊ¦","cid":407299,"Ci...
4 [{"IndustryName":"ÒµÎñÍØÕ¹Ö÷¹Ü/¾Àí","cid":41...
5 [{"IndustryName":"´ó¿Í»§ÏúÊÛ¾Àí","cid":3006,"...
6 [{"IndustryName":"ÆäËûÀÏʦ","cid":413964,"City...
7 [{"IndustryName":"ÐÐÕþ×ܼà","cid":6082,"CityNa...
8 [{"IndustryName":"³öÄÉÔ±","cid":415388,"CityNa...
9 [{"IndustryName":"¸±×ܾÀí/¸±×ܲÃ","cid":6896...
"""
原因分析:
提示:这里填写问题的分析:
SQL Server中涉及到中文的缺省字符集是CP936,所以将charset配置为CP936,就解决了中文乱码的问题。
解决方案:
方案A:
将编码设置为cp936
import pymssql conn = pymssql.connect(server="xxx",user="xxx",password="xxx",database="xxx",charset='cp936')
方案B:
可以利用sql server的内置方法convert 将中文转为 nvarchar类型
缺点:转化的长度最大为4000,超过的部分会自动截断,导致数据加载不全
import pymssql
conn = pymssql.connect(server="xxx",user="xxx",password="xxx",database="xxx",charset='utf8')
cursor = conn.cursor()
cursor.execute('select convert(nvarchar(100),jobName) from test_tb')



