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进程管理工具supervisor使用实例
Sep 17 Python
深入浅析python with语句简介
Apr 11 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
Oct 28 Python
python用列表生成式写嵌套循环的方法
Nov 08 Python
Python Pandas数据中对时间的操作
Jul 30 Python
python3常用的数据清洗方法(小结)
Oct 31 Python
python将三维数组展开成二维数组的实现
Nov 30 Python
Python开发之pip安装及使用方法详解
Feb 21 Python
如何基于windows实现python定时爬虫
May 01 Python
python识别验证码的思路及解决方案
Sep 13 Python
Sublime Text3最新激活注册码分享适用2020最新版 亲测可用
Nov 12 Python
python 模拟登录B站的示例代码
Dec 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
咖啡店都有些什么常规豆子呢?有什么风味在里面
2021/03/04 咖啡文化
Yii2实现同时搜索多个字段的方法
2016/08/10 PHP
PHP调用其他文件中的类
2018/04/02 PHP
javascript事件模型代码
2007/07/01 Javascript
js获取GridView中行数据的两种方法 分享
2013/07/13 Javascript
使用JS画图之点、线、面
2015/01/12 Javascript
javascript中this的四种用法
2015/05/11 Javascript
jquery结婚电子请柬特效源码分享
2015/08/21 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
2015/11/05 Javascript
很全面的JavaScript常用功能汇总集合
2016/01/22 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
JavaScript每天必学之基础知识
2016/09/17 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
2016/12/27 Javascript
JS表单数据验证的正则表达式(常用)
2017/02/18 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
AngularJS中下拉框的高级用法示例
2017/10/11 Javascript
使用axios实现上传图片进度条功能
2017/12/21 Javascript
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
Python正则表达式非贪婪、多行匹配功能示例
2017/08/08 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
浅谈python的dataframe与series的创建方法
2018/11/12 Python
基于python实现高速视频传输程序
2019/05/05 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
Python搭建代理IP池实现存储IP的方法
2019/10/27 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
总经理岗位职责描述
2014/02/08 职场文书
考试保密承诺书
2014/08/30 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
庆祝儿童节标语
2014/10/09 职场文书
群众路线四风对照检查材料
2014/11/04 职场文书
导游词书写之黄山
2019/08/06 职场文书