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 相关文章推荐
编写自定义的Django模板加载器的简单示例
Jul 21 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
Dec 22 Python
快速了解Python开发中的cookie及简单代码示例
Jan 17 Python
Python 实现删除某路径下文件及文件夹的实例讲解
Apr 24 Python
python计算列表内各元素的个数实例
Jun 29 Python
python可视化实现代码
Jan 15 Python
Django自定义用户登录认证示例代码
Jun 30 Python
python sklearn库实现简单逻辑回归的实例代码
Jul 01 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
Jul 31 Python
用Python爬取QQ音乐评论并制成词云图的实例
Aug 24 Python
python json 递归打印所有json子节点信息的例子
Feb 27 Python
Python流程控制语句的深入讲解
Jun 15 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
关于js与php互相传值的介绍
2013/06/25 PHP
QQ互联一键登录审核不通过的解决方案
2014/09/10 PHP
Mac环境下php操作mysql数据库的方法分享
2015/05/11 PHP
动态控制Table的js代码
2007/03/07 Javascript
来自国外的页面JavaScript文件优化
2010/12/08 Javascript
JS实现字体选色板实例代码
2013/11/20 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
绑定回车enter事件代码
2014/05/18 Javascript
jQuery对象与DOM对象之间的相互转换
2015/03/03 Javascript
Nodejs如何搭建Web服务器
2016/03/28 NodeJs
zTree插件下拉树使用入门教程
2016/04/11 Javascript
Web程序员必备的7个JavaScript函数
2016/06/14 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
BootStrap表单时间选择器详解
2017/05/09 Javascript
单行 JS 实现移动端金钱格式的输入规则
2017/05/22 Javascript
基于mpvue的小程序项目搭建的步骤
2018/05/22 Javascript
详谈js的变量提升以及使用方法
2018/10/06 Javascript
Node.js console控制台简单用法分析
2019/01/04 Javascript
vue elementUI 表单校验的实现代码(多层嵌套)
2019/11/06 Javascript
浅谈VUE中演示v-for为什么要加key
2020/01/16 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
Vue中引入svg图标的两种方式
2021/01/14 Vue.js
为Python的web框架编写前端模版的教程
2015/04/30 Python
python实现识别相似图片小结
2016/02/22 Python
Python中的变量和作用域详解
2016/07/13 Python
深入浅出分析Python装饰器用法
2017/07/28 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
Python实现的简单计算器功能详解
2018/08/25 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
python创建学生管理系统
2019/11/22 Python
python NumPy ndarray二维数组 按照行列求平均实例
2019/11/26 Python
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
英语教师求职信范文
2015/03/20 职场文书
稽核岗位职责范本
2015/04/13 职场文书