如何处理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和JavaScript间代码转换的4个工具
Feb 22 Python
python 计算文件的md5值实例
Jan 13 Python
python3 模拟登录v2ex实例讲解
Jul 13 Python
Python实现桶排序与快速排序算法结合应用示例
Nov 22 Python
python中的闭包函数
Feb 09 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
May 29 Python
Django中的forms组件实例详解
Nov 08 Python
Python 加密与解密小结
Dec 06 Python
Python3如何判断三角形的类型
Apr 12 Python
pytorch  网络参数 weight bias 初始化详解
Jun 24 Python
Python Process创建进程的2种方法详解
Jan 25 Python
详解Python中的进程和线程
Jun 23 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调用三种数据库的方法(1)
2006/10/09 PHP
PHP 无限分类三种方式 非函数的递归调用!
2011/08/26 PHP
使用cookie实现统计访问者登陆次数
2013/06/08 PHP
PHP获取文件的MD5值并判断是否被修改的例子
2014/06/19 PHP
PHP7 新特性详细介绍
2016/09/06 PHP
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
使用js显示当前时间示例
2014/03/02 Javascript
javascript根据时间生成m位随机数最大13位
2014/10/30 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
jQuery+CSS3实现3D立方体旋转效果
2015/11/10 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
javascript事件处理模型实例说明
2016/05/31 Javascript
浅析Bootstrap表格的使用
2016/06/23 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
JavaScript轮播图简单制作方法
2017/02/20 Javascript
微信小程序 下拉菜单的实现
2017/04/06 Javascript
jQuery实现QQ空间汉字转拼音功能示例
2017/07/10 jQuery
webstrom Debug 调试vue项目的方法步骤
2018/07/17 Javascript
Node.js API详解之 console模块用法详解
2020/05/12 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
vue3.0 项目搭建和使用流程
2021/03/04 Vue.js
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
[02:01]2018完美盛典-开场舞《双子星》
2018/12/16 DOTA
Python实现简单的四则运算计算器
2016/11/02 Python
利用Python读取txt文档的方法讲解
2018/06/23 Python
Python中的字符串切片(截取字符串)的详解
2019/05/15 Python
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
《童年》教学反思
2014/02/18 职场文书
爽歪歪广告词
2014/03/20 职场文书
一体化教学实施方案
2014/05/10 职场文书
违反交通法规检讨书
2014/09/10 职场文书
政风行风评议整改方案
2014/09/15 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
python双向链表实例详解
2022/05/25 Python
html5+实现plus.io进行拍照和图片等获取
2022/06/01 HTML / CSS