python连接sql server乱码的解决方法


Posted in Python onJanuary 28, 2013

vi /etc/freetds/freetds.conf

[global]
# TDS protocol version
tds version = 8.0
client charset = UTF-8
# A typical Microsoft server
[Server55]
host = 192.168.1.55
port = 1433
tds version = 8.0
vi /etc/odbc.ini
[DSN55]
Description=my dsn
Driver=TDS
Database=qq99
Servername=Server55

tsql -S Server55 -U qq -P 123456 -D qq99
#coding=utf-8
#!/usr/bin/python
import pyodbc
cnxn = pyodbc.connect("DSN=DSN55;UID=qq;PWD=123456")
cursor = cnxn.cursor()
cursor.execute('select * from orders where username=?','qq')
a=cursor.fetchall()
print 'pyodbc',a

关闭连接:
csr.close()
del csr
conn.close()

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 Web程序部署到Ubuntu服务器上的方法
Feb 22 Python
python数字图像处理之骨架提取与分水岭算法
Apr 27 Python
Python一个简单的通信程序(客户端 服务器)
Mar 06 Python
Django使用redis缓存服务器的实现代码示例
Apr 28 Python
24式加速你的Python(小结)
Jun 13 Python
pandas的排序和排名的具体使用
Jul 31 Python
python twilio模块实现发送手机短信功能
Aug 02 Python
python制作英语翻译小工具代码实例
Sep 09 Python
python清空命令行方式
Jan 13 Python
Python Matplotlib绘图基础知识代码解析
Aug 31 Python
python使用re模块爬取豆瓣Top250电影
Oct 20 Python
Python加密与解密模块hashlib与hmac
Jun 05 Python
python定时检查启动某个exe程序适合检测exe是否挂了
Jan 21 #Python
Python实现的金山快盘的签到程序
Jan 17 #Python
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
Jan 17 #Python
Python高效编程技巧
Jan 07 #Python
Python内置函数bin() oct()等实现进制转换
Dec 30 #Python
python的id()函数解密过程
Dec 25 #Python
python cookielib 登录人人网的实现代码
Dec 19 #Python
You might like
PHP中大于2038年时间戳的问题处理方案
2015/03/03 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
2016/09/26 PHP
Zend Framework数据库操作技巧总结
2017/02/18 PHP
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
AngularJS语法详解
2015/01/23 Javascript
javascript实现uploadify上传格式以及个数限制
2015/11/23 Javascript
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
2016/06/16 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
2016/07/15 Javascript
详解Bootstrap的iCheck插件checkbox和radio
2016/08/24 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
jQuery实现两个select控件的互移操作
2016/12/22 Javascript
微信小程序五星评分效果实现代码
2017/04/06 Javascript
详谈JS中数组的迭代方法和归并方法
2017/08/11 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
[06:07]辉夜杯现场观众互动 “比谁远送显示器”
2015/12/26 DOTA
[46:04]Liquid vs VP Supermajor决赛 BO 第四场 6.10
2018/07/05 DOTA
Python的迭代器和生成器使用实例
2015/01/14 Python
Python实现常见的回文字符串算法
2018/11/14 Python
keras 读取多标签图像数据方式
2020/06/12 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
css3制作彩色边线3d立体按钮的示例(css3按钮)
2014/05/06 HTML / CSS
css3中新增的样式使用示例附效果图
2014/08/19 HTML / CSS
施华洛世奇澳大利亚官网:SWAROVSKI澳大利亚
2017/01/06 全球购物
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
半年思想汇报
2013/12/30 职场文书
市场营销大学生职业规划书
2014/02/25 职场文书
如何写好自荐信
2014/04/07 职场文书
竞选团支书演讲稿
2014/04/28 职场文书
工地质量标语
2014/06/12 职场文书
机械机修工岗位职责
2014/08/03 职场文书
2014法院干警廉洁警示教育思想汇报
2014/09/13 职场文书
教师四风自我剖析材料
2014/09/30 职场文书
病危通知单
2015/04/17 职场文书
工作服管理制度范本
2015/08/06 职场文书