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登录豆瓣并发帖的方法
Jul 08 Python
Python开发如何在ubuntu 15.10 上配置vim
Jan 25 Python
Windows 64位下python3安装nltk模块
Sep 19 Python
tensorflow 模型权重导出实例
Jan 24 Python
django 多数据库及分库实现方式
Apr 01 Python
Python3.7 读取音频根据文件名生成脚本的代码
Apr 07 Python
python3实现将json对象存入Redis以及数据的导入导出
Jul 16 Python
一些关于python 装饰器的个人理解
Aug 31 Python
Python 测试框架unittest和pytest的优劣
Sep 26 Python
详解Python 中的 defaultdict 数据类型
Feb 22 Python
Python OpenCV实现传统图片格式与base64转换
Jun 13 Python
Golang Web 框架Iris安装部署
Aug 14 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+SQL 注入攻击的技术实现以及预防办法
2010/12/29 PHP
利用ajax和PHP实现简单的流程管理
2017/03/23 PHP
PHP实现的折半查询算法示例
2017/10/09 PHP
javascript 对象的定义方法
2007/01/10 Javascript
jquery动态加载图片数据练习代码
2011/08/04 Javascript
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
jQuery插件分享之分页插件jqPagination
2014/06/06 Javascript
EditPlus 正则表达式 实战(3)
2016/12/15 Javascript
nodejs redis 发布订阅机制封装实现方法及实例代码
2016/12/15 NodeJs
Angular.js中window.onload(),$(document).ready()的写法浅析
2017/09/28 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
2018/03/01 Javascript
通过 JS 判断页面是否有滚动条的实现方法
2018/04/05 Javascript
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
vue-autoui自匹配webapi的UI控件的实现
2020/03/20 Javascript
Openlayers实现地图全屏显示
2020/09/28 Javascript
JS removeAttribute()方法实现删除元素的某个属性
2021/01/11 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
Python制作爬虫抓取美女图
2016/01/20 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
50行Python代码实现人脸检测功能
2018/01/23 Python
Python加载带有注释的Json文件实例
2018/05/23 Python
python多任务及返回值的处理方法
2019/01/22 Python
python程序输出无内容的解决方式
2020/04/09 Python
Keras SGD 随机梯度下降优化器参数设置方式
2020/06/19 Python
CSS的pointer-events属性详细介绍(作用和注意事项)
2014/04/23 HTML / CSS
使用 HTML5 Canvas 制作水波纹效果点击图片就会触发
2014/09/15 HTML / CSS
使用HTML5 Canvas为图片填充颜色和纹理的教程
2016/03/21 HTML / CSS
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
戴森英国官网:Dyson英国
2019/05/07 全球购物
护士专业推荐信
2013/11/02 职场文书
行政管理人员精品工作推荐信
2013/11/04 职场文书
护士先进个人总结
2015/02/13 职场文书
《绝招》教学反思
2016/02/20 职场文书
怎样写好工作计划
2019/04/10 职场文书
Python入门之基础语法详解
2021/05/11 Python