python连接sql server乱码的解决方法

 更新时间:2013年01月28日 12:40:20   作者:  
为解决python连接sql server是出现的乱码,需要在连接sql server 时指定字符集utf8(client charset = UTF-8),python环境制定了字符集变量(#coding=utf-8 )

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")

相关文章

  • 解决Tensorflow使用pip安装后没有model目录的问题

    解决Tensorflow使用pip安装后没有model目录的问题

    今天小编就为大家分享一篇解决Tensorflow使用pip安装后没有model目录的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 解决python pip安装第三方模块报错:error:legacy-install-failure

    解决python pip安装第三方模块报错:error:legacy-install-failure

    pip是python的第三方库管理器,可以根据所开发项目的需要,使用pip相关命令安装不同库,下面这篇文章主要给大家介绍了关于解决python pip安装第三方模块报错:error: legacy - install - failure的相关资料,需要的朋友可以参考下
    2023-04-04
  • Python中输入和输出(打印)数据实例方法

    Python中输入和输出(打印)数据实例方法

    在本篇文章里小编给大家整理的是关于Python中输入和输出(打印)数据实例方法以及相关知识点,有需要的朋友们参考下。
    2019-10-10
  • python数组如何添加整行或整列

    python数组如何添加整行或整列

    这篇文章主要介绍了python数组如何添加整行或整列问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • Django 项目通过加载不同env文件来区分不同环境

    Django 项目通过加载不同env文件来区分不同环境

    这篇文章主要介绍了Django 项目如何通过加载不同env文件来区分不同环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 如何使用 Pylint 来规范 Python 代码风格(来自IBM)

    如何使用 Pylint 来规范 Python 代码风格(来自IBM)

    本文通过详细的理论介绍和简单易懂的实例全面介绍了 Python 代码分析工具 Pylint。相信读者看完后一定可以轻松地将 Pylint 运用到自己的开发工程中
    2018-04-04
  • Python中在脚本中引用其他文件函数的实现方法

    Python中在脚本中引用其他文件函数的实现方法

    下面小编就为大家带来一篇Python中在脚本中引用其他文件函数的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • Python字符串中出现的次数统计多种方法

    Python字符串中出现的次数统计多种方法

    这篇文章主要介绍了Python字符串中出现的次数统计多种方法,使用内置的count()方法、正则表达式、列表推导式、循环和条件判断以及字符串分割,每种方法都有其适用的场景和优缺点,选择合适的方法取决于具体的需求和场景,需要的朋友可以参考下
    2024-12-12
  • python实现红包裂变算法

    python实现红包裂变算法

    这篇文章主要介绍了python实现红包裂变算法的相关资料,需要的朋友可以参考下
    2016-02-02
  • django的聚合函数和aggregate、annotate方法使用详解

    django的聚合函数和aggregate、annotate方法使用详解

    这篇文章主要介绍了django的聚合函数和aggregate、annotate方法使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07

最新评论