如何处理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 快速把超大txt文件转存为csv的实例
Oct 26 Python
python读取word文档,插入mysql数据库的示例代码
Nov 07 Python
Python3中编码与解码之Unicode与bytes的讲解
Feb 28 Python
python使用原始套接字发送二层包(链路层帧)的方法
Jul 22 Python
Django 对IP访问频率进行限制的例子
Aug 30 Python
Python with标签使用方法解析
Jan 17 Python
解决tensorflow打印tensor有省略号的问题
Feb 04 Python
Python写出新冠状病毒确诊人数地图的方法
Feb 12 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
Mar 11 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
Jul 14 Python
Python json格式化打印实现过程解析
Jul 21 Python
python获取本周、上周、本月、上月及本季的时间代码实例
Sep 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
php操作sqlserver关于时间日期读取的小小见解
2009/11/29 PHP
PHP实现自动登入google play下载app report的方法
2014/09/23 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
2017/04/19 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
[JS]点出统计器
2020/10/11 Javascript
浅析jquery某一元素重复绑定的问题
2014/01/03 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
JavaScript将XML转成JSON的方法
2015/03/12 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
向JavaScript的数组中添加元素的方法小结
2015/10/24 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
2016/04/12 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
2016/09/14 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
2017/01/04 Javascript
jquery实现百叶窗效果
2017/01/12 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
原生JS实现垂直手风琴效果
2017/02/19 Javascript
jQuery EasyUI ProgressBar进度条组件
2017/02/28 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
javascript、php关键字搜索函数的使用方法
2018/05/29 Javascript
mocha的时序规则讲解
2019/02/16 Javascript
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
OpenLayers3实现鼠标移动显示坐标
2020/09/25 Javascript
python fabric实现远程操作和部署示例
2014/03/25 Python
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
Django的URLconf中使用缺省视图参数的方法
2015/07/18 Python
python爬虫的工作原理
2017/03/05 Python
pandas重新生成索引的方法
2018/11/06 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
Python实现图像去噪方式(中值去噪和均值去噪)
2019/12/18 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
4s客服专员岗位职责
2013/12/01 职场文书
2014年社区工会工作总结
2014/12/18 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书
使用pd.merge表连接出现多余行的问题解决
2022/06/16 Python
VW、VH适配移动端的解决方案与常见问题
2023/05/21 HTML / CSS