簡體   English   中英

想要創建一個可以將mysql數據庫轉儲為sql文件的視圖

[英]Want to create a view which can dump mysql database as a sql file

我似乎有問題。 我想編寫一些可以在管理員用戶單擊按鈕時轉儲mysql數據庫的代碼。 我試圖在下面的views.py中編寫一些代碼。

Views.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")

現在給我一個錯誤The view c2duo_mms.mmc.views.dbbackup didn't return an HttpResponse object. 如果添加,請在末尾返回HttpResponse。 它會說unbound method has_header() must be called with HttpResponse instance as first argument (got str instance instead)

我不太確定是什么問題。 但我無法解決問題。 我現在有點卡住了。

您需要從方法末尾返回有效的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文件的下載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM