如何处理Python3.4 使用pymssql 乱码问题


Posted in Python onJanuary 08, 2016

在项目中发现这样一个问题:sqlserver数据库编码为gbk,使用python3.4+pymssql 查询,中文乱码,经过一番思考问题解决,下面把解决办法分享给大家:

conn = pymssql.connect(host="192.168.122.141", 
port=1433, 
user="myshop", 
password="oyf20140208HH", 
database="mySHOPCMStock", 
charset='utf8', 
as_dict=True) cur = conn.cursor()sql = "select top 10 [ID],[Name] from [User]"cur.execute(sql)list = cur.fetchall()for row in list: print(row["ID"],row["Name"].encode('latin-1').decode('gbk'))

接下来给大家介绍python 使用pymssql连接sql server数据库

#coding=utf-8 
#!/usr/bin/env python
#-------------------------------------------------------------------------------
# Name: pymssqlTest.py
# Purpose: 测试 pymssql库,该库到这里下载:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql
#
# Author: scott
#
# Created: 04/02/2012
#-------------------------------------------------------------------------------
import pymssql
class MSSQL:
"""
对pymssql的简单封装
pymssql库,该库到这里下载:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql
使用该库时,需要在Sql Server Configuration Manager里面将TCP/IP协议开启
用法:
"""
def __init__(self,host,user,pwd,db):
self.host = host
self.user = user
self.pwd = pwd
self.db = db
def __GetConnect(self):
"""
得到连接信息
返回: conn.cursor()
"""
if not self.db:
raise(NameError,"没有设置数据库信息")
self.conn = pymssql.connect(host=self.host,user=self.user,password=self.pwd,database=self.db,charset="utf8")
cur = self.conn.cursor()
if not cur:
raise(NameError,"连接数据库失败")
else:
return cur
def ExecQuery(self,sql):
"""
执行查询语句
返回的是一个包含tuple的list,list的元素是记录行,tuple的元素是每行记录的字段
调用示例:
ms = MSSQL(host="localhost",user="sa",pwd="123456",db="PythonWeiboStatistics")
resList = ms.ExecQuery("SELECT id,NickName FROM WeiBoUser")
for (id,NickName) in resList:
print str(id),NickName
"""
cur = self.__GetConnect()
cur.execute(sql)
resList = cur.fetchall()
#查询完毕后必须关闭连接
self.conn.close()
return resList
def ExecNonQuery(self,sql):
"""
执行非查询语句
调用示例:
cur = self.__GetConnect()
cur.execute(sql)
self.conn.commit()
self.conn.close()
"""
cur = self.__GetConnect()
cur.execute(sql)
self.conn.commit()
self.conn.close()
def main():
## ms = MSSQL(host="localhost",user="sa",pwd="123456",db="PythonWeiboStatistics")
## #返回的是一个包含tuple的list,list的元素是记录行,tuple的元素是每行记录的字段
## ms.ExecNonQuery("insert into WeiBoUser values('2','3')")
ms = MSSQL(host="localhost",user="sa",pwd="123456",db="PythonWeiboStatistics")
resList = ms.ExecQuery("SELECT id,weibocontent FROM WeiBo")
for (id,weibocontent) in resList:
print str(weibocontent).decode("utf8")
if __name__ == '__main__':
main()

三水点靠木提醒大家需要注意事项:

使用pymssql进行中文操作时候可能会出现中文乱码,我解决的方案是:

文件头加上 #coding=utf8

sql语句中有中文的时候进行encode

insertSql = "insert into WeiBo([UserId],[WeiBoContent],[PublishDate]) values(1,'测试','2012/2/1')".encode("utf8")

连接的时候加入charset设置信息

pymssql.connect(host=self.host,user=self.user,password=self.pwd,database=self.db,charset="utf8")

Python 相关文章推荐
flask中使用SQLAlchemy进行辅助开发的代码
Feb 10 Python
python实现监控linux性能及进程消耗性能的方法
Jul 25 Python
Win10下Python环境搭建与配置教程
Nov 18 Python
python pandas中DataFrame类型数据操作函数的方法
Apr 08 Python
python+ffmpeg批量去视频开头的方法
Jan 09 Python
Python3实现统计单词表中每个字母出现频率的方法示例
Jan 28 Python
Python模拟登录之滑块验证码的破解(实例代码)
Nov 18 Python
python DataFrame转dict字典过程详解
Dec 26 Python
django商品分类及商品数据建模实例详解
Jan 03 Python
Python实现手势识别
Oct 21 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
Dec 17 Python
python palywright库基本使用
Jan 21 Python
Python argv用法详解
Jan 08 #Python
详解Python爬虫的基本写法
Jan 08 #Python
黑科技 Python脚本帮你找出微信上删除你好友的人
Jan 07 #Python
星球大战与Python之间的那些事
Jan 07 #Python
python高手之路python处理excel文件(方法汇总)
Jan 07 #Python
Python解析最简单的验证码
Jan 07 #Python
Python中http请求方法库汇总
Jan 06 #Python
You might like
整合了前面的PHP数据库连接类~~做成一个分页类!
2006/11/25 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
2011/11/10 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
基于jquery的direction图片渐变动画效果
2010/05/24 Javascript
IE6下CSS图片缓存问题解决方法
2010/12/09 Javascript
再谈Jquery Ajax方法传递到action(补充)
2014/05/12 Javascript
Javascript学习笔记之函数篇(五) : 构造函数
2014/11/23 Javascript
详解JavaScript函数
2015/12/01 Javascript
AngularJS实现表单验证功能
2017/01/09 Javascript
原生js仿淘宝网商品放大镜效果
2017/02/28 Javascript
Vue中的slot使用插槽分发内容的方法
2018/03/01 Javascript
详解javascript appendChild()的完整功能
2018/08/18 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
2018/11/21 Javascript
js设置默认时间跨度过程详解
2019/07/17 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
2020/08/04 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
浅析Python中yield关键词的作用与用法
2016/11/29 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
pandas带有重复索引操作方法
2018/06/08 Python
django admin 后台实现三级联动的示例代码
2018/06/22 Python
实践Vim配置python开发环境
2018/07/02 Python
使用numba对Python运算加速的方法
2018/10/15 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
Pytorch 中retain_graph的用法详解
2020/01/07 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
2020/09/30 Python
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
八年级语文教学反思
2014/02/11 职场文书
迟到检讨书范文
2015/01/27 职场文书
2015小学五年级班主任工作总结
2015/05/21 职场文书
Python中time与datetime模块使用方法详解
2022/03/31 Python