DJANGO工程调用pymssql模块备份SQLSERVER2008数据库的实例

urls.py加入:

url(r'^bak/$',views.bak,name='bak'),

views.py加入该方法:

def bak(request):
    if request.method=="POST":
        host=request.POST.get("dbip")
        ports=request.POST.get("dbport")
        dbuname=request.POST.get("dbuname")
        dbpwd=request.POST.get("dbpwd")
        dbname=request.POST.get("databases")
        dbstrs=""
        try:
            dbstrs=dbs2.bakdatabase(host,ports,dbuname,dbpwd,dbname)
        except:
            return render(request,"bakdatabase.html",{"login_err":"FAIL"})

        return render(request,"bakdatabase.html",{"login_err":"downlink:ftp://FTP服务器的IP地址/"+dbstrs})
    else:
        return render(request,"bakdatabase.html",{"login_err":"no set"})

dbs2.py写好bakdatabase的方法

import pymssql                     #导入这个模块,当然,也要导入其它代码当中有用到的模块,这里就不一一列举了

def bakdatabase(hosts,ports,uname,pwd,databases):
    nowtime=time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))+""
    con=pymssql.connect(host=hosts,port=ports,user=uname,password=pwd,database=databases)
    
    con.autocommit(True)
    cur = con.cursor()
    # sql0="exec master..xp_cmdshell 'net use //IPADDRESS/d$/temp/bak password/user:domainname/username'"
    # cur.execute(sql0) 

   #上一行主要是为了获得备份目的主机文件夹的写入权限,在WINDOWS域中,启动DJANGO的帐号如果已经具有写入

   sql = "backup database " +databases+  " to disk='\\\\IPADDRESS\\d$\\temp\\bak\\" + str(databases)+ nowtime + ".bak'"
    # sqldel="exec master..xp_cmdshell 'net use //IPADDRESS/d$/temp/bak /delete'"
    # cur.execute(sqldel)
   
    
    dbstrs=str(databases)+str(nowtime) + ".bak"
    cur.execute(sql)
    con.autocommit(False)
    cur.close()
    return dbstrs

前端的bakdatabase.html,前端我不会,随便写的

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form id="loginForm" action="{% url 'bak' %}" method="POST"> {% csrf_token %}
IP\实例<input type="text" class="form-control" name="dbip" placeholder="IP\实例" value="默认的数据库实例IP"></br>
实例端口<input type="text" class="form-control" name="dbport" placeholder="实例端口" value="1444"></br>
连接帐号<input type="text" class="form-control" name="dbuname" placeholder="连接帐号"></br>
连接密码<input type="password" class="form-control" name="dbpwd" placeholder="连接密码"></br>
数据库名<input type="text" class="form-control" name="databases" placeholder="数据库名"></br>
<button class="btn btn-success btn-block" type="submit">
                            <b>确定备份</b>
                        </button>

<h4 style="color: red"><b>{{ login_err }}</b></h4>
    </form>
</body>
</html>

演示效果:

输入对应的信息,确定备份,系统返回下载链接,为确保数据的安全,设置好FTP的访问权限

猜你喜欢

转载自blog.csdn.net/lsysafe/article/details/82185155
今日推荐