如何处理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 相关文章推荐
Python 读取图片文件为矩阵和保存矩阵为图片的方法
Apr 27 Python
pandas删除行删除列增加行增加列的实现
Jul 06 Python
Python 经典算法100及解析(小结)
Sep 13 Python
python中有关时间日期格式转换问题
Dec 25 Python
python numpy数组中的复制知识解析
Feb 03 Python
解决tensorflow打印tensor有省略号的问题
Feb 04 Python
Python单例模式的四种创建方式实例解析
Mar 04 Python
Django接收照片储存文件的实例代码
Mar 07 Python
基于pycharm实现批量修改变量名
Jun 02 Python
Python爬虫破解登陆哔哩哔哩的方法
Nov 17 Python
Python实现简单猜数字游戏
Feb 03 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
Feb 16 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
JavaScript 数组循环引起的思考
2010/01/01 Javascript
基于JavaScript实现动态创建表格和增加表格行数
2015/12/20 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
详解Node.Js如何处理post数据
2016/09/19 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
jQuery使用Layer弹出层插件闪退问题
2016/12/22 Javascript
JavaScript调试的多个必备小Tips
2017/01/15 Javascript
详解微信小程序开发之城市选择器 城市切换
2017/01/17 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
2017/03/07 Javascript
JS模拟实现ECMAScript5新增的数组方法
2017/03/20 Javascript
AngularJS实现表格的增删改查(仅限前端)
2017/07/04 Javascript
Js自定义多选框效果的实例代码
2017/07/05 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
js 两个日期比较相差多少天的实例
2017/10/19 Javascript
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
React.js绑定this的5种方法(小结)
2018/06/05 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
浅谈anaconda python 版本对应关系
2020/10/07 Python
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
涉外文秘个人求职的自我评价
2013/10/07 职场文书
毕业生动漫设计求职信
2013/10/11 职场文书
本科毕业生自我鉴定
2013/11/02 职场文书
毕业自荐信
2013/12/16 职场文书
幼儿园庆六一活动方案
2014/03/06 职场文书
公益广告标语
2014/06/19 职场文书
烟台的海导游词
2015/02/02 职场文书
古诗文之爱国名句(77句)
2019/09/24 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js
什么是css原子化,有什么用?
2022/04/24 HTML / CSS