如何处理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 01 Python
Python实现LRU算法的2种方法
Jun 24 Python
Python正则表达式教程之二:捕获篇
Mar 02 Python
Python中查看文件名和文件路径
Mar 31 Python
python使用递归的方式建立二叉树
Jul 03 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
Aug 02 Python
python 五子棋如何获得鼠标点击坐标
Nov 04 Python
Python hashlib加密模块常用方法解析
Dec 18 Python
Pytorch根据layers的name冻结训练方式
Jan 06 Python
Pytorch DataLoader 变长数据处理方式
Jan 08 Python
tensorflow生成多个tfrecord文件实例
Feb 17 Python
python代码如何注释
Jun 01 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
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
php数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
PHP实现转盘抽奖算法分享
2020/04/15 PHP
jquery插件开发注意事项小结
2013/06/04 Javascript
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
Node.js开源应用框架HapiJS介绍
2015/01/14 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
jquery Ajax实现Select动态添加数据
2017/06/08 jQuery
JavaScript模拟文件拖选框样式v1.0的实例
2017/08/04 Javascript
webpack4 css打包压缩问题的解决
2018/05/18 Javascript
手挽手带你学React之React-router4.x的使用
2019/02/14 Javascript
微信小程序实现的一键复制功能示例
2019/04/24 Javascript
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
2019/07/06 Javascript
Vue通过配置WebSocket并实现群聊功能
2019/12/31 Javascript
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
[52:57]2014 DOTA2国际邀请赛中国区预选赛 LGD-CDEC VS HGT
2014/05/21 DOTA
[00:14]护身甲盾
2019/03/06 DOTA
Python迭代用法实例教程
2014/09/08 Python
Python中Django发送带图片和附件的邮件
2017/03/31 Python
python+pygame简单画板实现代码实例
2017/12/13 Python
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
浅谈python 读excel数值为浮点型的问题
2018/12/25 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
使用Python轻松完成垃圾分类(基于图像识别)
2019/07/09 Python
Python对称的二叉树多种思路实现方法
2020/02/28 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
python用什么编辑器进行项目开发
2020/06/17 Python
Python bisect模块原理及常见实例
2020/06/17 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
python空元组在all中返回结果详解
2020/12/15 Python
德国鞋子网上商店:Omoda.de
2017/03/31 全球购物
Linux如何为某个操作添加别名
2015/02/05 面试题
环保标语大全
2014/06/12 职场文书
经营场所使用证明
2015/06/19 职场文书