pymssql連接SQLServer

#encoding='utf-8'
import pymssql
from collections.abc import Iterable

class MSSQL(object):
    '''
    對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):
        '''
        得到鏈接信息
        :return:
        '''
        if not self.db:
            raise (NameError, "沒有設置數據庫信息")
        self.connect=pymssql.connect(host=self.host, user=self.user, password=self.pwd, database=self.db,charset='utf8')
        cur = self.connect.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
        :param sql: sql語句
        :return:
        '''
        cur=self.GetConnect()
        cur.execute(sql)
        resList = cur.fetchall()

        #查詢完畢後必須關閉連接
        self.connect.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.connect.commit()
        self.connect.close()

def test():
        from collections.abc import Iterable 
        ## ms = MSSQL(host="localhost",user="sa",pwd="123456",db="PythonWeiboStatistics")
        ## #返回的是一個包含tuple的list,list的元素是記錄行,tuple的元素是每行記錄的字段
        ms = MSSQL(host="127.0.0.1",  user="sa", pwd="123", db="test")
        resList = ms.ExecQuery('SELECT * FROM abc')
        for x in resList:
            print(x[0], x[1])


if __name__ == '__main__':
    test()
發佈了94 篇原創文章 · 獲贊 10 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章