想创建一个可以将mysql数据库转储为sqlfi的视图吗

2024-09-28 20:38:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我好像有问题。我想写一些代码,当管理员用户单击按钮时,可以转储mysql数据库。我试着在我的视图.py下面。在

视图.py

    @login_required
    def dbbackup(request):
        if not (request.user.is_authenticated() and request.user.is_staff):
            raise http.Http404
        os.chdir('/usr/local/src/djcode/c2duo_mms')  # This is important as apache by default goes to the user's home directory.
        os.popen3("mysqldump --add-drop-table -u " + settings.DATABASE_USER + " -p" + settings.DATABASE_PASSWORD + " " + settings.DATABASE_NAME + " >  backup.sql")
        os.popen3("gzip -c backup.sql > backup.gz")

如果我在末尾添加returnhttpresponse,现在会给我一个错误The view c2duo_mms.mmc.views.dbbackup didn't return an HttpResponse object.。它将显示unbound method has_header() must be called with HttpResponse instance as first argument (got str instance instead)。在

我不太确定是什么问题。但我不能想出解决办法。我现在有点卡住了。在


Tags: py视图sqlsettingsisosrequestas
1条回答
网友
1楼 · 发布于 2024-09-28 20:38:50

您需要从方法的末尾返回一个有效的HttpResponse对象。例如,如果要返回gzip文件:

@login_required
def dbbackup(request):
    if not (request.user.is_authenticated() and request.user.is_staff):
        raise http.Http404
    os.chdir('/usr/local/src/djcode/c2duo_mms')  # This is important as apache by default goes to the user's home directory.
    os.popen3("mysqldump  add-drop-table -u " + settings.DATABASE_USER + " -p" + settings.DATABASE_PASSWORD + " " + settings.DATABASE_NAME + " >  backup.sql")
    os.popen3("gzip -c backup.sql > backup.gz")
    dataf = open('/usr/local/src/djcode/c2duo_mms/backup.gz', 'r')
    return HttpResponse(dataf.read(), mimetype='application/x-gzip')

这将启动gzip文件的下载。在

相关问题 更多 >