pymssql查询数据乱码---AND---pyodbc查询数据转json报错:Object of type Row is not JSON serializable~~~解决方法

前言:
pymssql本身在Linux系统上使用不会有乱码问题,由于内容需要在win上进行,python代码挂载到win10后出现查询数据乱码问题。

解决pymssql乱码:
**方案一 **:pymssql.connect()参数多加一个charset=‘cp936’

conn = pymssql.connect(config.server, config.user, config.password, config.database, charset='cp936')

坑:我有张表的内容包含----名称、详细说明…等。其中名称不乱码详细说明乱码,使用字符集参数后,名称直接就没了,详细说明的正常了。

方案二:把pymssql改成使用pyodbc
很简单只要稍微改一点就好了如下

#import pymssql
import pyodbc 
#conn = pymssql.connect(config.server, config.user, config.password, config.database)
conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+config.server+';DATABASE='+config.database+';UID='+ config.user +';PWD='+ config.password)

衍生问题:我返回的内容是json出去的就给报了个-----TypeError: Object of type Row is not JSON serializable。
原因:pyodbc返回值直接看结果的type和pymssql是一样的都是list,但是去看list里面的值类型时pyodbc是pyodbc.Row而pymssql是tuple,众所周知tuple可以直接json。那么我们就把pyodbc.Row转list好了,因为list可以直接json也是众所周知。

cursor.execute(sql)
rows = cursor.fetchall()
data=[]
for item in rows:
	data.append(list(item))
return data
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值