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 client使用http post 到server端的代码
Feb 10 Python
Python中lambda的用法及其与def的区别解析
Jul 28 Python
Python用UUID库生成唯一ID的方法示例
Dec 15 Python
Python算法应用实战之栈详解
Feb 04 Python
Python中最大最小赋值小技巧(分享)
Dec 23 Python
numpy使用技巧之数组过滤实例代码
Feb 03 Python
简单了解python 邮件模块的使用方法
Jul 24 Python
Pytorch中膨胀卷积的用法详解
Jan 07 Python
使用Django清空数据库并重新生成
Apr 03 Python
python3 自动打印出最新版本执行的mysql2redis实例
Apr 09 Python
Python新手如何理解循环加载模块
May 29 Python
编写python程序的90条建议
Apr 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线性表顺序存储实现代码(增删查改)
2012/02/16 PHP
php打开远程文件的方法和风险及解决方法
2013/11/12 PHP
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
PHP网站自动化配置的实现方法(必看)
2017/05/27 PHP
基于Jquery的文字自动截取(提供源代码)
2011/08/09 Javascript
JQuery防止退格键网页后退的实现代码
2012/03/23 Javascript
js中iframe调用父页面的方法
2014/10/30 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
浅谈使用React.setState需要注意的三点
2017/12/18 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
vue-cli 打包使用history模式的后端配置实例
2018/09/20 Javascript
vue滚动tab跟随切换效果
2020/06/29 Javascript
vue使用showdown并实现代码区域高亮的示例代码
2019/10/17 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
整理Python中的赋值运算符
2015/05/13 Python
Python处理JSON数据并生成条形图
2016/08/05 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
浅谈Series和DataFrame中的sort_index方法
2018/06/07 Python
nohup后台启动Python脚本,log不刷新的解决方法
2019/01/14 Python
Python生成rsa密钥对操作示例
2019/04/26 Python
python实现雪花飘落效果实例讲解
2019/06/18 Python
浅谈Python小波分析库Pywavelets的一点使用心得
2019/07/09 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
2020/03/01 Python
如何减少垃圾回收让内存更加有效使用
2013/10/18 面试题
高中生学习生活的自我评价
2013/10/09 职场文书
大队干部竞选演讲稿
2014/04/28 职场文书
旷课检讨书
2015/01/26 职场文书
难以忽视的真相观后感
2015/06/05 职场文书
法制主题班会教案
2015/08/13 职场文书
初一英语教学反思
2016/02/15 职场文书
php 解析非标准json、非规范json
2021/04/01 PHP
浅谈MySql整型索引和字符串索引失效或隐式转换问题
2021/11/20 MySQL
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android