如何处理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编程之变量赋值操作实例分析
Jul 24 Python
python 数字类型和字符串类型的相互转换实例
Jul 17 Python
Python 处理图片像素点的实例
Jan 08 Python
使用django的ORM框架按月统计近一年内的数据方法
Jul 18 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
Jul 22 Python
python getpass模块用法及实例详解
Oct 07 Python
python实现树的深度优先遍历与广度优先遍历详解
Oct 26 Python
python argparse传入布尔参数false不生效的解决
Apr 20 Python
浅析python中的del用法
Sep 02 Python
Python:__eq__和__str__函数的使用示例
Sep 26 Python
Python偏函数实现原理及应用
Nov 20 Python
将Python代码打包成.exe可执行文件的完整步骤
May 12 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 csv操作类代码
2009/12/14 PHP
防止用户利用PHP代码DOS造成用光网络带宽
2011/03/01 PHP
php判断两个日期之间相差多少个月份的方法
2015/06/18 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
2015/12/24 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
简单实用的PHP文本缓存类实例
2019/03/22 PHP
js常用函数 不错
2006/09/08 Javascript
使用js显示当前时间示例
2014/03/02 Javascript
javascript操作表格排序实例分析
2015/05/06 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
BootStrap实用代码片段之一
2016/03/22 Javascript
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
2016/06/07 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
2016/08/10 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
2016/11/25 Javascript
微信小程序 require机制详解及实例代码
2016/12/14 Javascript
ionic3 懒加载
2017/08/16 Javascript
windows下更新npm和node的方法
2017/11/30 Javascript
使用命令行工具npm新创建一个vue项目的方法
2017/12/27 Javascript
Angular实现的简单查询天气预报功能示例
2017/12/27 Javascript
浅谈React Native 传参的几种方式(小结)
2019/05/21 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
js实现简单五子棋游戏
2020/05/28 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
2020/09/12 Javascript
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
2015/05/22 Python
详解在Python程序中解析并修改XML内容的方法
2015/11/16 Python
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
Python数据分析matplotlib设置多个子图的间距方法
2018/08/03 Python
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
护士自我评价
2014/02/01 职场文书
财务支持类个人的自我评价
2014/02/14 职场文书
农村结婚典礼司仪主持词
2014/03/14 职场文书
2014第二批党员干部对照“四风”找差距检查材料思想汇报
2014/09/18 职场文书
2015年司法所工作总结
2015/04/27 职场文书
工作报告范文
2019/06/20 职场文书
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python