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中的__slots__使用示例
Feb 26 Python
Python函数式编程指南(四):生成器详解
Jun 24 Python
python实现远程通过网络邮件控制计算机重启或关机
Feb 22 Python
python实战之实现excel读取、统计、写入的示例讲解
May 02 Python
Django实现登录随机验证码的示例代码
Jun 20 Python
python实现图片彩色转化为素描
Jan 15 Python
Python安装与基本数据类型教程详解
May 29 Python
Flask配置Cors跨域的实现
Jul 12 Python
pycharm修改file type方式
Nov 19 Python
Python3合并两个有序数组代码实例
Aug 11 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
Nov 05 Python
教你怎么用python selenium实现自动化测试
May 27 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面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
php中var_export与var_dump的区别分析
2010/08/21 PHP
PHP写杨辉三角实例代码
2011/07/17 PHP
解析php做推送服务端实现ios消息推送
2013/07/01 PHP
php实现的AES加密类定义与用法示例
2018/01/29 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
为你的 Laravel 验证器加上多验证场景的实现
2020/04/07 PHP
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
JS 按钮点击触发(兼容IE、火狐)
2013/08/07 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
2015/08/25 Javascript
基于jQuery实现动态搜索显示功能
2016/05/05 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
2016/06/23 Javascript
javascript实现简易计算器
2017/02/01 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
2017/12/08 Javascript
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
vue中路由跳转不计入history的操作
2020/09/21 Javascript
Python面向对象编程基础解析(一)
2017/10/26 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
2018/05/25 Python
基于python实现音乐播放器代码实例
2020/07/01 Python
python使用建议与技巧分享(一)
2020/08/17 Python
使用numpngw和matplotlib生成png动画的示例代码
2021/01/24 Python
CPB肌肤之钥美国官网:Clé de Peau Beauté
2017/09/05 全球购物
质检部岗位职责
2013/11/11 职场文书
如何掌握自荐信格式呢
2013/11/19 职场文书
关爱老人标语
2014/06/21 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
高三毕业评语
2014/12/31 职场文书
2015年司机年终工作总结
2015/05/14 职场文书
公司年会开场白
2015/06/01 职场文书
解约证明模板
2015/06/19 职场文书
旅行社计调工作总结
2015/08/12 职场文书
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
2021/06/29 Python
PYTHON使用Matplotlib去实现各种条形图的绘制
2022/03/22 Python
Centos系统通过Docker安装并搭建MongoDB数据库
2022/04/12 MongoDB