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的访问权限