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

1 篇文章 0 订阅
1 篇文章 0 订阅

前言:
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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值