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学习之编写查询ip程序
Feb 27 Python
Python简单的制作图片验证码实例
May 31 Python
对pandas进行数据预处理的实例讲解
Apr 20 Python
python并发和异步编程实例
Nov 15 Python
python将list转为matrix的方法
Dec 12 Python
pandas.read_csv参数详解(小结)
Jun 21 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
Jul 03 Python
基于pytorch的保存和加载模型参数的方法
Aug 17 Python
python实现获取单向链表倒数第k个结点的值示例
Oct 24 Python
简单了解python shutil模块原理及使用方法
Apr 28 Python
浅谈django channels 路由误导
May 28 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
Jul 23 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.MVC的模板标签系统(五)
2006/09/05 PHP
PHP中的闭包(匿名函数)浅析
2015/02/07 PHP
PHP读取Excel类文件
2017/05/15 PHP
ThinkPHP 5.1 跨域配置方法
2019/10/11 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
javascript 动态添加事件代码
2008/11/30 Javascript
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
2012/03/14 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
javascript中打印当前的时间实现思路及代码
2013/12/18 Javascript
easyui datagrid 键盘上下控制选中行示例
2014/03/31 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
如何在JS中实现相互转换XML和JSON
2016/07/19 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
vue 父组件给子组件传值子组件给父组件传值的实例代码
2019/04/15 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
Python break语句详解
2014/03/11 Python
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
浅析使用Python操作文件
2017/07/31 Python
python数据结构之链表详解
2017/09/12 Python
Python中的Numpy矩阵操作
2018/08/12 Python
将Django项目部署到CentOs服务器中
2018/10/18 Python
Python 数值区间处理_对interval 库的快速入门详解
2018/11/16 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
2018/12/30 Python
Python对接 xray 和微信实现自动告警
2019/09/17 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
纯CSS3单页切换导航菜单界面设计的简单实现
2016/08/16 HTML / CSS
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
会计电算化专业毕业生推荐信
2013/12/24 职场文书
关于国庆节的演讲稿
2014/09/05 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
Vue3.0写自定义指令的简单步骤记录
2021/06/27 Vue.js
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL
python神经网络ResNet50模型
2022/05/06 Python
MySQL数据库查询之多表查询总结
2022/08/05 MySQL