У меня есть функция просмотра django для выгрузки базы данных mysql на удаленный сервер Ubuntu и сохранения команд в файле журнала.Но во время работы он постоянно говорит мне, что с файлами что-то не так.Здесь я представляю некоторый код, и кто-то может мне помочь?
Django 2.1.7, python3.6, Ubuntu16.04LTS
class Step1aView(IndexView):
def MySQLDumpBackup(self, dbhost, dbuser, dbpwd, dbname):
# backup mysql database to sql file
backupDir = r"/opt/workspace"
dbCharset = 'utf8'
backupDate = time.strftime(r"%Y-%m-%d_%H:%M:%S")
dumppath = r"/usr/bin/mysqldump"
# position of mysqldump on the server
# commands to execute
self.command = dumppath + " -h %s -u %s -p%s %s --default_character-set=%s > %s/%s_%s.sql" %(dbhost,dbuser,dbpwd,dbname,dbCharset,backupDir,backupDate,dbname)
# if the log file does not exists, create it as DjangoDbLog.txt
logName = backupDir + '/DjangoDbLog.txt'
# logName = 'DjangoDbLog.txt'
if os.path.exists(logName) == False:
logFile = open(logName, 'w')
logFile.close()
else:
pass
logFile = open(logName, 'a')
logFile.write('\n' + self.command + 'Time:' + backupDate)
logFile.close()
# execute the command
os.system(self.command)
filenames = backupDate+'_'+dbname+'.sql'
return filenames
def post(self, request):
if request.method == 'POST':
dbhost = request.POST.get('Ori_ip')
dbport = int(request.POST.get('Ori_port'))
dbname = request.POST.get('Ori_db')
dbuser = request.POST.get('Ori_name')
dbpwd = request.POST.get('Ori_passwd')
dbchar = request.POST.get('Ori_char')
dbhost = str(dbhost)
dbname = str(dbname)
dbuser = str(dbuser)
dbpwd = str(dbpwd)
dbchar = str(dbchar)
try:
filenames=self.MySQLDumpBackup(dbhost, dbuser, dbpwd, dbname)
except Exception as error:
errStr = str(error)
return render(request, 'add_struc/index.html', {"message_zone":"Error message" + errStr})
return render(request, 'add_struc/index.html', {"message_zone":"Backup successful, "+filenames})