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 31 Python
Python中的zip函数使用示例
Jan 29 Python
在服务器端实现无间断部署Python应用的教程
Apr 16 Python
Python基于numpy灵活定义神经网络结构的方法
Aug 19 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
Feb 07 Python
Django框架 querySet功能解析
Sep 04 Python
TensorFlow查看输入节点和输出节点名称方式
Jan 04 Python
python实现简单飞行棋
Feb 06 Python
Python递归调用实现数字累加的代码
Feb 25 Python
django实现模型字段动态choice的操作
Apr 01 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
Sep 09 Python
python 对象真假值的实例(哪些视为False)
Dec 11 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 cli 方式 在crotab中运行解决
2010/02/08 PHP
PHP删除非空目录的函数代码小结
2013/02/28 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
2014/12/15 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
2017/07/03 PHP
在laravel中实现将查询的对象转换为多维数组的函数
2019/10/21 PHP
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
2012/07/31 Javascript
jquery删除提示框弹出是否删除对话框
2014/01/07 Javascript
js判断iframe内的网页是否滚动到底部触发事件
2014/03/18 Javascript
javascript闭包入门示例
2014/04/30 Javascript
javascript实现2048游戏示例
2014/05/04 Javascript
JavaScript中的slice()方法使用详解
2015/06/06 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
2015/06/19 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
2016/11/15 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
2018/07/31 NodeJs
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
2019/07/15 Javascript
前端开发基础javaScript的六大作用
2020/08/06 Javascript
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
python TKinter获取文本框内容的方法
2018/10/11 Python
python selenium 弹出框处理的实现
2019/02/26 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
python3.7环境下安装Anaconda的教程图解
2019/09/10 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
2020/11/17 Python
应用艺术专业个人的自我评价
2014/01/03 职场文书
大学军训感言
2014/01/10 职场文书
体育馆的标语
2014/06/24 职场文书
法人代表证明书格式
2014/10/01 职场文书
联谊会开场白
2015/06/01 职场文书
工作态度怎么写
2015/06/25 职场文书
初中毕业生感言
2015/07/31 职场文书
写作技巧:如何撰写商业计划书
2019/08/08 职场文书
浅谈Python中对象是如何被调用的
2022/04/06 Python
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS