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二叉树遍历的实现方法
Nov 21 Python
简述Python中的面向对象编程的概念
Apr 27 Python
python通过smpt发送邮件的方法
Apr 30 Python
举例详解Python中循环语句的嵌套使用
May 14 Python
Django 如何获取前端发送的头文件详解(推荐)
Aug 15 Python
基于Django模板中的数字自增(详解)
Sep 05 Python
Python中的并发处理之asyncio包使用的详解
Apr 03 Python
Django应用程序入口WSGIHandler源码解析
Aug 05 Python
Python语法之精妙的十个知识点(装B语法)
Jan 18 Python
Python 解决相对路径问题:"No such file or directory"
Jun 05 Python
Python Pillow(PIL)库的用法详解
Sep 19 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
Nov 22 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
一个高ai的分页函数和一个url函数
2006/10/09 PHP
php Undefined index的问题
2009/06/01 PHP
解析关于wamp启动是80端口被占用的问题
2013/06/21 PHP
php文件上传的简单实例
2013/10/19 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
jQuery选择器之属性过滤选择器详解
2017/09/28 jQuery
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
2018/04/26 jQuery
详解js类型判断
2018/05/22 Javascript
详解Vue CLI 3.0脚手架如何mock数据
2018/11/23 Javascript
微信小程序时间轴实现方法示例
2019/01/14 Javascript
详解js中let与var声明变量的区别
2020/04/05 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
2019/09/23 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
2020/09/16 Javascript
使用Python抓取模板之家的CSS模板
2015/03/16 Python
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
实例讲解Python中函数的调用与定义
2016/03/14 Python
python实现单线程多任务非阻塞TCP服务端
2017/06/13 Python
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
Python Flask-web表单使用详解
2017/11/18 Python
一篇文章快速了解Python的GIL
2018/01/12 Python
Python闭包和装饰器用法实例详解
2019/05/22 Python
Python占用的内存优化教程
2019/07/28 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
python编程进阶之异常处理用法实例分析
2020/02/21 Python
Python字符串hashlib加密模块使用案例
2020/03/10 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
2020/03/14 Python
美国女性服饰销售网站:Nasty Gal(坏女孩)
2016/07/26 全球购物
应届大专生自荐书
2014/06/16 职场文书
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
2014年城管工作总结
2014/11/20 职场文书
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
2022/05/11 Servers