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将多个文本文件合并为一个文本的代码(便于搜索)
Mar 13 Python
python判断windows隐藏文件的方法
Mar 21 Python
python单线程实现多个定时器示例
Mar 30 Python
Python使用正则匹配实现抓图代码分享
Apr 02 Python
python通过配置文件共享全局变量的实例
Jan 11 Python
Python面向对象之Web静态服务器
Sep 03 Python
wxPython电子表格功能wx.grid实例教程
Nov 19 Python
Python实现计算长方形面积(带参数函数demo)
Jan 18 Python
python 两个一样的字符串用==结果为false问题的解决
Mar 12 Python
Python Numpy中数据的常用保存与读取方法
Apr 01 Python
Django跨域请求原理及实现代码
Nov 14 Python
Python中Selenium对Cookie的操作方法
Jul 09 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+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
Php图像处理类代码分享
2012/01/19 PHP
详解使用php调用微信接口上传永久素材
2017/04/11 PHP
PHP时间函数使用详解
2019/03/21 PHP
jQuery autocomplete插件修改
2009/04/17 Javascript
window.ActiveXObject使用说明
2010/11/08 Javascript
jquery键盘事件使用介绍
2011/11/01 Javascript
基于javascript显示当前时间以及倒计时功能
2016/03/18 Javascript
ES6中Array.includes()函数的用法
2017/09/20 Javascript
js前端导出Excel的方法
2017/11/01 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
原生JS实现留言板功能
2020/02/08 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
vue自定义组件实现双向绑定
2021/01/13 Vue.js
javascript实现简单页面倒计时
2021/03/02 Javascript
[01:30:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第二场 2月2日
2021/03/11 DOTA
Python实现自动登录百度空间的方法
2017/06/10 Python
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
django与小程序实现登录验证功能的示例代码
2019/02/19 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
Python3批量生成带logo的二维码方法
2019/06/24 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
selenium WebDriverWait类等待机制的实现
2020/03/18 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
Jupyter Notebook安装及使用方法解析
2020/11/12 Python
calendar在python3时间中常用函数举例详解
2020/11/18 Python
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
Tea Collection官网:一家位于旧金山的童装公司
2020/08/07 全球购物
公务员试用期满考核材料
2014/05/22 职场文书
小人国观后感
2015/06/11 职场文书
小学班主任心得体会
2016/01/07 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
中学音乐课教学反思
2016/02/18 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书
Python 如何利用ffmpeg 处理视频素材
2021/11/27 Python
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫