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使用pyhook监控键盘并实现切换歌曲的功能
Jul 18 Python
Python中optparse模块使用浅析
Jan 01 Python
利用Opencv中Houghline方法实现直线检测
Feb 11 Python
Python使用Selenium爬取淘宝异步加载的数据方法
Dec 17 Python
python遍历小写英文字母的方法
Jan 02 Python
如何使用Python实现斐波那契数列
Jul 02 Python
Python字典推导式将cookie字符串转化为字典解析
Aug 10 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
Feb 11 Python
python实现引用其他路径包里面的模块
Mar 09 Python
Scrapy 配置动态代理IP的实现
Sep 28 Python
python 三边测量定位的实现代码
Apr 22 Python
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
Apr 21 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脚本中include文件出错解决方法
2008/11/20 PHP
Mysql数据库操作类( 1127版,提供源码下载 )
2010/12/02 PHP
php实现文件下载简单示例(代码实现文件下载)
2014/03/10 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
Jquery的Tabs内容轮换效果实现代码,几行搞定
2014/02/12 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
javascript实现的HashMap类代码
2014/06/27 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
2015/01/06 Javascript
jQuery.each使用详解
2015/07/07 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
2016/04/12 Javascript
BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面
2016/08/01 Javascript
JavaScript实现一个空中避难的小游戏
2017/06/06 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
vue-video-player视频播放器使用配置详解
2020/10/23 Javascript
Python Trie树实现字典排序
2014/03/28 Python
深入分析在Python模块顶层运行的代码引起的一个Bug
2014/07/04 Python
举例详解Python中的split()函数的使用方法
2015/04/07 Python
Python的MongoDB模块PyMongo操作方法集锦
2016/01/05 Python
Python中将字典转换为列表的方法
2016/09/21 Python
详解使用python的logging模块在stdout输出的两种方法
2017/05/17 Python
python简单实现AES加密和解密
2019/03/28 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
2020/10/30 Python
HTML5混合开发二维码扫描以及调用本地摄像头
2017/12/27 HTML / CSS
POP文化和音乐灵感的时尚:Hot Topic
2019/06/19 全球购物
商场端午节活动方案
2014/01/29 职场文书
小学生中国梦演讲稿
2014/04/23 职场文书
党的群众路线教育实践活动个人批评与自我批评
2014/10/16 职场文书
2014年党的群众路线活动个人整改措施
2014/10/28 职场文书
2015年办公室主任工作总结
2015/04/09 职场文书
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js
Win11黑色桌面背景怎么办?Win11黑色壁纸解决方法汇总
2022/04/05 数码科技