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实现国外赌场热门游戏Craps(双骰子)
Mar 31 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
Apr 27 Python
python MNIST手写识别数据调用API的方法
Aug 08 Python
网易有道2017内推编程题 洗牌(python)
Jun 19 Python
利用Python检测URL状态
Jul 31 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
Jul 31 Python
Python全局锁中如何合理运用多线程(多进程)
Nov 06 Python
Django单元测试中Fixtures用法详解
Feb 25 Python
python实现udp传输图片功能
Mar 20 Python
如何使用python切换hosts文件
Apr 29 Python
Python制作数据预测集成工具(值得收藏)
Aug 21 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
Feb 25 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 上传文件大小限制
2009/07/05 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
2012/01/03 PHP
PHP 正则表达式小结
2015/02/12 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
2018/05/31 PHP
laravel高级的Join语法详解以及使用Join多个条件
2019/10/16 PHP
Cookie 注入是怎样产生的
2009/04/08 Javascript
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
DOM 高级编程
2015/05/06 Javascript
javascript连续赋值问题
2015/07/08 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
vuex实现简易计数器
2016/10/27 Javascript
js对字符串进行编码的方法总结(推荐)
2016/11/10 Javascript
jQuery遮罩层实例讲解
2017/05/11 jQuery
新手如何快速理解js异步编程
2019/06/24 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
2019/09/05 Javascript
Windows下安装 node 的版本控制工具 nvm
2020/02/06 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
2021/01/26 Vue.js
Python求导数的方法
2015/05/09 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
Python基础知识点 初识Python.md
2019/05/14 Python
python pandas 时间日期的处理实现
2019/07/30 Python
python修改字典键(key)的方法
2019/08/05 Python
python3下pygame如何实现显示中文
2020/01/11 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
台湾家适得:Homeget
2019/02/11 全球购物
企业演讲稿范文
2013/12/28 职场文书
信息管理应届生求职信
2014/03/07 职场文书
学校募捐倡议书
2014/05/14 职场文书
教师节活动总结
2014/08/29 职场文书
保洁员岗位职责
2015/02/04 职场文书
tensorboard 可视化之localhost:6006不显示的解决方案
2021/05/22 Python
Python答题卡识别并给出分数的实现代码
2021/06/22 Python
修改并编译golang源码的操作步骤
2021/07/25 Golang