如何处理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去掉字符串中重复字符的方法
Feb 27 Python
剖析Python的Tornado框架中session支持的实现代码
Aug 21 Python
Python正则获取、过滤或者替换HTML标签的方法
Jan 28 Python
通过Python模块filecmp 对文件比较的实现方法
Jun 29 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
Oct 14 Python
使用python实现多维数据降维操作
Feb 24 Python
Django单元测试中Fixtures的使用方法
Feb 26 Python
Python爬虫小例子——爬取51job发布的工作职位
Jul 10 Python
python实现测试工具(一)——命令行发送get请求
Oct 19 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
Feb 20 Python
Python中glob库实现文件名的匹配
Jun 18 Python
Python可变与不可变数据和深拷贝与浅拷贝
Apr 06 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获得文件大小和文件创建时间的方法
2015/03/13 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
jquery ajax请求实例深入解析
2012/11/26 Javascript
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
JavaScript 实现鼠标拖动元素实例代码
2014/02/24 Javascript
gridview生成时如何去掉style属性中的border-collapse
2014/09/30 Javascript
Javascript中Array用法实例分析
2015/06/13 Javascript
js实现网页收藏功能
2015/12/17 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
2016/01/06 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
JS常用字符串方法(推荐)
2021/01/15 Javascript
微信小程序(应用号)开发新闻客户端实例
2016/10/24 Javascript
使用Angular缓存父页面数据的方法
2017/01/03 Javascript
详解PHP中pathinfo()函数导致的安全问题
2017/01/05 Javascript
Bootstrap媒体对象学习使用
2017/03/07 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
iconfont的三种使用方式详解
2018/08/05 Javascript
Python3基础之条件与循环控制实例解析
2014/08/13 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
Python使用pymysql小技巧
2017/06/04 Python
CentOS中升级Python版本的方法详解
2017/07/10 Python
python selenium 对浏览器标签页进行关闭和切换的方法
2018/05/21 Python
Pyinstaller打包.py生成.exe的方法和报错总结
2019/04/02 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
2020/12/13 Python
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
HTML5中外部浏览器唤起微信分享
2020/01/02 HTML / CSS
教师简历自我评价
2014/02/03 职场文书
关爱空巢老人感想
2015/08/11 职场文书
子女赡养老人协议书
2016/03/23 职场文书
浅析MySQL如何实现事务隔离
2021/06/26 MySQL
mysql 索引合并的使用
2021/08/30 MySQL