Python连接Sqlserver数据库(解决中文乱码版)

以下是Python的pymssql库连接sqlserver数据库执行SQL语句的示例代码:

参考:http://www.cnblogs.com/qianlifeng/archive/2012/02/06/2340367.html

#! /usr/bin/env python
#coding=utf8
"""
Author: xiaobai
Date:
Description:Python连接sqlserver数据库,解决中文乱码问题
"""
import pymssql
import sys
import os

reload(sys)
sys.setdefaultencoding('utf-8')
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'

class MSSQL:
    """
    对pymssql的简单封装
    使用该库时,需要在Sql Server configuration Mnanage里面讲TCP/IP协议开启
    """

    def __init__(self,host,port,user,pwd,db):
        self.host = host
        self.user = user
		self.port = port
        self.pwd = pwd
        self.db = db

    def __GetConnect(self):
        """
        得到连接信息
        conn.cursor()
        :return:
        """
        if not self.db:
            raise (NameError, "没有设置数据库信息")

        self.conn = pymssql.connect(host=self.host, port=self.port, 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的元素是每行记录的字段
        :param sql:
        :return:
        """
        cur = self.__GetConnect()
        cur.execute(sql)
        resList = cur.fetchall()

        #查询完毕后必须关闭连接
        self.conn.close()
        return resList

    def ExecNonQuery(self,sql):
        """
        执行非查询语句
        :param sql:
        :return:
        """
        cur = self.__GetConnect()
        cur.execute(sql)
        self.conn.commit()
        self.conn.close()

def main():
    ms = MSSQL(host='192.1.1.1', port=1234, user='sa', pwd='123456', db='LearnDB')
    resList = ms.ExecQuery("""select LastName,Address from person""")
    for (LastName,Address) in resList:
        print str(Address)

if __name__ == "__main__":
    main()

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值