pymssql操作sql的DBHelp类,python增删改查sqlserver【mssqlDB.py】

文件名:mssqlDB.py

1、导入模块:

# -*- coding:utf-8 -*-
import pymssql
#import numpy as np

2、配置辅助类:

class Configration:
    """数据库设置"""
    host="10.10.15.55"
    port=1433
    user="sa"
    pwd="Aa123456"
    db="testDB"
    def __init__(self):
       pass

3、连接数据库辅助类:

class UniqueObject(Configration):  #only offer a support of connecting db
    """description of class"""
    cur=None
    conn=None

    def __init__(self):
        Configration.__init__(self)
    def __del__(self):
           if  self.conn!=None:
                      self.conn.close()
                      print(">>>>>>>>>>>>>>>>>Connection has been closed!<<<<<<<<<<<<<<<<<<<")
    @staticmethod
    def GetObject():
        if UniqueObject.cur==None:
            print(">>>>>>>>>>>>>>>>>Connecting to Database.....<<<<<<<<<<<<<<<<<<")
            return UniqueObject.__GetConnect()
        return UniqueObject.conn,UniqueObject.cur

    def __GetConnect():
           if not Configration.db:  raise(NameError,"no db Info")
           UniqueObject.conn =pymssql.connect(host=Configration.host,port=Configration.port,\
                      user=Configration.user,password=Configration.pwd,\
                      database=Configration.db,charset="utf8")
           UniqueObject.cur=UniqueObject.conn.cursor()
           if not UniqueObject.cur:    raise(NameError,"Connection error!")
           else: return UniqueObject.conn,UniqueObject.cur

4、数据操作类:

class MSSQL():
    conn,cur=UniqueObject.GetObject()
    def __init__(self):
       pass

    def __del__(self):
     #print("\n  MSSQL object has been realsed!")   
        pass
    #普通查询
    def GetQuery(self,sql): 
        # MSSQL.cur.execute(sql)
        # reslist=self.cur.fetchall()
        # return reslist
        #cur = conn.cursor()
        result = []
        try:
            MSSQL.cur.execute(sql)
            index = MSSQL.cur.description
            for res in MSSQL.cur.fetchall():
                row = {}
                for i in range(len(index)):
                    row[index[i][0]] = res[i]
                result.append(row)
            #MSSQL.cur.close()
        except:
            print(">>>>>>>>>>>>>>>>>GetQuery exception.....<<<<<<<<<<<<<<<<<<")
        return result

    #带分页查询
    def GetQueryPage(self,sql): 
        result = []
        jieguo = {}
        try:
            MSSQL.cur.execute(sql)
            index = MSSQL.cur.description
            for res in MSSQL.cur.fetchall():
                row = {}
                for i in range(len(index)):
                    row[index[i][0]] = res[i]
                result.append(row)
                jieguo['datalist'] = result
            #循环多个结果集
            for k in range(1,10) :
                if MSSQL.cur.nextset():
                    result1 = []
                    index = MSSQL.cur.description
                    for res1 in MSSQL.cur.fetchall():
                        row = {}
                        for i in range(len(index)):
                            row[index[i][0]] = res1[i]
                        result1.append(row)
                    jieguo['datalist'+str(k)] = result1
                else:
                    print('循环结束')
                    break;
                
            #MSSQL.cur.close()
        except:
            print(">>>>>>>>>>>>>>>>>GetQueryPage exception.....<<<<<<<<<<<<<<<<<<")
        return jieguo
    
    #执行SQL
    def ExecQuery(self,sql): 
        try:
            MSSQL.cur.execute(sql)
            result = MSSQL.cur.rowcount
            MSSQL.conn.commit()
            return result
        except:
            print("\nInserting exception!")
            return -1

 

5、整合版源码:

# -*- coding:utf-8 -*-
import pymssql
#import numpy as np

class Configration:
    """数据库设置"""
    host="10.10.15.55"
    port=1433
    user="sa"
    pwd="Aa123456"
    db="testDB"
    def __init__(self):
       pass

class UniqueObject(Configration):  #only offer a support of connecting db
    """description of class"""
    cur=None
    conn=None

    def __init__(self):
        Configration.__init__(self)
    def __del__(self):
           if  self.conn!=None:
                      self.conn.close()
                      print(">>>>>>>>>>>>>>>>>Connection has been closed!<<<<<<<<<<<<<<<<<<<")
    @staticmethod
    def GetObject():
        if UniqueObject.cur==None:
            print(">>>>>>>>>>>>>>>>>Connecting to Database.....<<<<<<<<<<<<<<<<<<")
            return UniqueObject.__GetConnect()
        return UniqueObject.conn,UniqueObject.cur

    def __GetConnect():
           if not Configration.db:  raise(NameError,"no db Info")
           UniqueObject.conn =pymssql.connect(host=Configration.host,port=Configration.port,\
                      user=Configration.user,password=Configration.pwd,\
                      database=Configration.db,charset="utf8")
           UniqueObject.cur=UniqueObject.conn.cursor()
           if not UniqueObject.cur:    raise(NameError,"Connection error!")
           else: return UniqueObject.conn,UniqueObject.cur


class MSSQL():
    conn,cur=UniqueObject.GetObject()
    def __init__(self):
       pass

    def __del__(self):
     #print("\n  MSSQL object has been realsed!")   
      pass
    def GetQuery(self,sql): 
        # MSSQL.cur.execute(sql)
        # reslist=self.cur.fetchall()
        # return reslist
        #cur = conn.cursor()
        result = []
        try:
            MSSQL.cur.execute(sql)
            index = MSSQL.cur.description
            for res in MSSQL.cur.fetchall():
                row = {}
                for i in range(len(index)):
                    row[index[i][0]] = res[i]
                result.append(row)
            #MSSQL.cur.close()
        except:
            print(">>>>>>>>>>>>>>>>>GetQuery exception.....<<<<<<<<<<<<<<<<<<")
        return result

    #带分页查询
    def GetQueryPage(self,sql): 
        result = []
        jieguo = {}
        try:
            MSSQL.cur.execute(sql)
            index = MSSQL.cur.description
            for res in MSSQL.cur.fetchall():
                row = {}
                for i in range(len(index)):
                    row[index[i][0]] = res[i]
                result.append(row)
                jieguo = { "datalist":result}
            #2.下一个结果集
            if MSSQL.cur.nextset():
                result1 = []
                index = MSSQL.cur.description
                for res in MSSQL.cur.fetchall():
                    row = {}
                    for i in range(len(index)):
                        row[index[i][0]] = res[i]
                    result1.append(row)
                    jieguo = { "datalist":result,"datapage":result1}
            #MSSQL.cur.close()
        except:
            print(">>>>>>>>>>>>>>>>>GetQueryPage exception.....<<<<<<<<<<<<<<<<<<")
        return jieguo

    def ExecQuery(self,sql): 
        try:
            MSSQL.cur.execute(sql)
            result = MSSQL.cur.rowcount
            MSSQL.conn.commit()
            return result
        except:
            print("\nInserting exception!")
            return -1
View Code

 

6、调用实例:

from django.shortcuts import render
from HelloWorld import mssqlDB
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
import json
from HelloWorld import pager

db = mssqlDB.MSSQL()
# Create your views here.
def blog_index(request):
    #ms = mssqlDB.MSSQL(host="10.10.15.55",user="sa",pwd="Aa123456",db="testDB")
    #resList = ms.GetQuery("select * from tUsers")
    blog_list = db.GetQuery("select * from tUsers") # 获取所有数据
    #test=json.dumps(blog_list)
    return render(request,'index.html', {'blog_list':blog_list})   # 返回index.html
    
#视图-添加用户
def blog_Add_V(request):
    return render(request,'add.html')  

#视图-分页
def pagelist(request):
    pagenum = request.GET.get('page')
    if pagenum == None:
        pagenum = 1
    datalist = db.GetQueryPage("""select * from 
                        (select ROW_NUMBER() OVER (order by id desc )AS RowNumber,* from tUsers) as temp
                        where RowNumber between 10*({0}-1) and 10*{0};SELECT COUNT(1) total FROM tUsers""".format(pagenum))
    all_count = datalist.get("datapage")[0].get("total") 
    # 获取要显示数据库的总数据条数
    page_info = pager.PageInfo(request.GET.get('page'), all_count, 'pagelist.htm',) 
    print(page_info.start_data()) 
    print(page_info.end_data()) 
    #获取数据集合

    #page_info.pager()
    # 利用分页对象获取当前页显示数据
    return render(request, 'pagelist.html', {'page_info': page_info,'datalist':datalist}) 

#DB-添加用户
@csrf_exempt #增加装饰器,作用是跳过 csrf 中间件的保护
def blog_Add_DB(request):
    sql=""
    if request.POST:
        sql = "INSERT INTO tUsers(name,age) VALUES('%s',%s)"%(request.POST['xingMing'],request.POST['nianLing'])
    else:
        sql = "INSERT INTO tUsers(name,age) VALUES('%s',%s)"%(request.GET['xingMing'],request.GET['nianLing'])
    print(sql)
    ret = db.ExecQuery(sql)
    if ret > 0:
        return HttpResponse('操作成功')
    else:
        return HttpResponse('操作失败')
View Code

 

转载于:https://www.cnblogs.com/guangang/articles/9258683.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值