如何处理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中文分词实现方法(安装pymmseg)
Jun 14 Python
python3使用requests模块爬取页面内容的实战演练
Sep 25 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
Oct 07 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
Feb 01 Python
python通过Windows下远程控制Linux系统
Jun 20 Python
转换科学计数法的数值字符串为decimal类型的方法
Jul 16 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
May 23 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
Aug 17 Python
解决pandas展示数据输出时列名不能对齐的问题
Nov 18 Python
python、Matlab求定积分的实现
Nov 20 Python
python处理RSTP视频流过程解析
Jan 11 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
Apr 08 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
屏蔽浏览器缓存另类方法
2006/10/09 PHP
PHP 5.3.0 安装分析心得
2009/08/07 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
PHP实现获取文件后缀名的几种常用方法
2015/08/08 PHP
thinkphp实现图片上传功能
2016/01/13 PHP
php正则修正符用法实例详解
2016/12/29 PHP
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
JQuery实现用户名无刷新验证的小例子
2013/03/22 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
Jquery树插件zTree用法入门教程
2015/02/17 Javascript
jquery实现网页的页面平滑滚动效果代码
2015/11/02 Javascript
详解WordPress开发中get_current_screen()函数的使用
2016/01/11 Javascript
Bootstrap实现的标签页内容切换显示效果示例
2017/05/25 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
vue中v-text / v-html使用实例代码详解
2019/04/02 Javascript
微信小程序转发事件实现解析
2019/10/22 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
2020/03/31 Javascript
使用 Python 获取 Linux 系统信息的代码
2014/07/13 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
Python列表list排列组合操作示例
2018/12/18 Python
自学python的建议和周期预算
2019/01/30 Python
Python list与NumPy array 区分详解
2019/11/06 Python
基于Django实现日志记录报错信息
2019/12/17 Python
3种python调用其他脚本的方法
2020/01/06 Python
使用Python爬虫库requests发送表单数据和JSON数据
2020/01/25 Python
keras实现多种分类网络的方式
2020/06/11 Python
python的数学算法函数及公式用法
2020/11/18 Python
商得四方公司面试题(gid+)
2014/04/30 面试题
感恩节红领巾广播稿
2014/02/11 职场文书
学生干部学习的自我评价
2014/02/18 职场文书
数控专业毕业生自荐信范文
2014/03/04 职场文书
竞选学生会演讲稿
2014/04/25 职场文书
背起爸爸上学观后感
2015/06/08 职场文书
获奖感言怎么写
2015/07/31 职场文书
JavaScript实现复选框全选功能
2021/04/11 Javascript