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使用BeautifulSoup分析网页信息的方法
Apr 04 Python
使用Python装饰器在Django框架下去除冗余代码的教程
Apr 16 Python
在Python中使用matplotlib模块绘制数据图的示例
May 04 Python
python生成词云的实现方法(推荐)
Jun 13 Python
Python实现输出程序执行进度百分比的方法
Sep 16 Python
Python 12306抢火车票脚本
Feb 07 Python
基于scrapy的redis安装和配置方法
Jun 13 Python
基于tensorflow加载部分层的方法
Jul 26 Python
python 实现倒排索引的方法
Dec 25 Python
python 经典数字滤波实例
Dec 16 Python
Python 使用 environs 库定义环境变量的方法
Feb 25 Python
python面向对象版学生信息管理系统
Jun 24 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设计模式 Prototype (原型模式)代码
2011/06/26 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
2014/05/15 PHP
PHP 匿名函数与注意事项详细介绍
2016/11/26 PHP
wordpress自定义标签云与随机获取标签的方法详解
2019/03/22 PHP
EXT中xtype的含义分析
2010/01/07 Javascript
有关于JS构造函数的重载和工厂方法
2013/04/07 Javascript
jQuery提示效果代码分享
2014/11/20 Javascript
js闭包所用的场合以及优缺点分析
2015/06/22 Javascript
10个JavaScript中易犯小错误
2016/02/14 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
利用JQuery直接调用asp.net后台的简单方法
2016/10/27 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
2017/08/17 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
js实现固定区域内的不重叠随机圆
2019/10/24 Javascript
js实现转动骰子模型
2019/10/24 Javascript
小程序如何定位所在城市及发起周边搜索
2020/02/11 Javascript
Javascript实现html转pdf高清版(提高分辨率)
2020/02/19 Javascript
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
[01:36:17]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第一场 1月31日
2021/03/11 DOTA
利用python发送和接收邮件
2016/09/27 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
2017/11/29 Python
Python实现的求解最小公倍数算法示例
2018/05/03 Python
详解python分布式进程
2018/10/08 Python
Python字典的核心底层原理讲解
2019/01/24 Python
python实现大学人员管理系统
2019/10/25 Python
使用pyshp包进行shapefile文件修改的例子
2019/12/06 Python
Python TKinter如何自动关闭主窗口
2020/02/26 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
Hotels.com英国:全球领先的酒店住宿提供商
2019/01/24 全球购物
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
银行委托书范本
2014/04/04 职场文书
超市创意活动方案
2014/08/15 职场文书
大学生军训自我鉴定范文
2014/09/18 职场文书
文体活动总结
2015/02/04 职场文书
解除租赁合同协议书
2016/03/21 职场文书
感谢信
2019/04/11 职场文书