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 httplib,smtplib使用方法
Sep 06 Python
python绘图库Matplotlib的安装
Jul 03 Python
跟老齐学Python之dict()的操作方法
Sep 24 Python
详解Python中表达式i += x与i = i + x是否等价
Feb 08 Python
python urllib urlopen()对象方法/代理的补充说明
Jun 29 Python
python中numpy包使用教程之数组和相关操作详解
Jul 30 Python
Python基于plotly模块实现的画图操作示例
Jan 23 Python
Python实现的微信支付方式总结【三种方式】
Apr 13 Python
python绘制地震散点图
Jun 18 Python
python 实现一个反向单位矩阵示例
Nov 29 Python
Pycharm配置PyQt5环境的教程
Apr 02 Python
Python如何输出百分比
Jul 31 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
如何冲泡挂耳包咖啡?技巧是什么
2021/03/04 冲泡冲煮
随时给自己贴的图片加文字的php水印
2007/03/16 PHP
destoon实现首页显示供应、企业、资讯条数的方法
2014/07/15 PHP
php短址转换实现方法
2015/02/25 PHP
PHP实现查询手机归属地的方法详解
2017/04/28 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
jquery和javascript中如何将一元素的内容赋给另一元素
2014/01/09 Javascript
页面刷新时记住滚动条的位置jquery代码
2014/06/17 Javascript
JavaScript电子时钟倒计时第二款
2016/01/10 Javascript
基于JavaScript实现前端文件的断点续传
2016/10/17 Javascript
AngularJS入门示例之Hello World详解
2017/01/04 Javascript
js通过Date对象实现倒计时动画效果
2017/10/27 Javascript
Vue 项目部署到服务器的问题解决方法
2017/12/05 Javascript
VueJs监听window.resize方法示例
2018/01/17 Javascript
jsonp跨域获取数据的基础教程
2018/07/01 Javascript
ES6基础之展开语法(Spread syntax)
2019/02/21 Javascript
vue-cli3 配置开发与测试环境详解
2019/05/17 Javascript
跟老齐学Python之正规地说一句话
2014/09/28 Python
深入浅析python 中的匿名函数
2018/05/21 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
Pandas之groupby( )用法笔记小结
2019/07/23 Python
Python threading的使用方法解析
2019/08/28 Python
利用 Python ElementTree 生成 xml的实例
2020/03/06 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
python re模块常见用法例举
2021/03/01 Python
意大利体育用品网上商城:Nencini Sport
2016/08/18 全球购物
德国、奥地利和瑞士最大的旅行和度假门户网站:HolidayCheck
2019/11/14 全球购物
办公室主任岗位职责
2013/11/08 职场文书
同学聚会欢迎辞
2014/01/14 职场文书
学校七一活动方案
2014/01/19 职场文书
小学三八妇女节活动方案
2014/03/16 职场文书
公司办公室岗位职责
2014/03/19 职场文书
拆迁委托协议书
2014/09/15 职场文书
2015年圣诞节活动总结
2015/03/24 职场文书