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+OpenCV让电脑帮你玩微信跳一跳
Jan 04 Python
numpy.transpose对三维数组的转置方法
Apr 17 Python
详解python的sorted函数对字典按key排序和按value排序
Aug 10 Python
Python实现简单石头剪刀布游戏
Jan 20 Python
python 实现多维数组转向量
Nov 30 Python
利用python中集合的唯一性实现去重
Feb 11 Python
python实现的分层随机抽样案例
Feb 25 Python
15行Python代码实现免费发送手机短信推送消息功能
Feb 27 Python
详解django使用include无法跳转的解决方法
Mar 19 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
May 20 Python
Django CBV模型源码运行流程详解
Aug 17 Python
python 实现逻辑回归
Dec 30 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
世界第一个无线广播电台 KDKA
2021/03/01 无线电
实用的PHP带公钥加密类分享(每次加密结果都不一样哦)
2014/08/20 PHP
PHP使用PDO连接ACCESS数据库
2015/03/05 PHP
微信支付PHP SDK ―― 公众号支付代码详解
2016/09/13 PHP
JAVASCRIPT IE 与 FF中兼容问题小结
2009/02/18 Javascript
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
jQuery代码优化之基本事件
2011/11/01 Javascript
jQuery实现的分子运动小球碰撞效果
2016/01/27 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
jQuery简易时光轴实现方法示例
2017/03/13 Javascript
在vue组件中使用axios的方法
2018/03/16 Javascript
ES6中let 和 const 的新特性
2018/09/03 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
2019/07/13 Javascript
package.json中homepage属性的作用详解
2020/03/11 Javascript
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
在Python中使用模块的教程
2015/04/27 Python
python实现SMTP邮件发送功能
2020/06/16 Python
Python测试人员需要掌握的知识
2018/02/08 Python
pandas 小数位数 精度的处理方法
2018/06/09 Python
python对html过滤处理的方法
2018/10/21 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
2018/12/10 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
2019/06/10 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
django配置app中的静态文件步骤
2020/03/27 Python
CSS3 Columns分列式布局方法简介
2014/05/03 HTML / CSS
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
西海岸男士和男童服装:Johnnie-O
2018/03/15 全球购物
天逸系统(武汉)有限公司Java笔试题
2015/12/29 面试题
linux面试题参考答案(7)
2012/10/29 面试题
工作中的自我评价如何写好
2013/10/28 职场文书
汽车专业毕业生推荐信
2013/11/12 职场文书
《桂林山水》教学反思
2014/02/08 职场文书
决心书标准格式
2014/03/11 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
团委工作总结2015
2015/04/02 职场文书
单位综合评价意见
2015/06/05 职场文书