import os
import datetime
import subprocess

# Configurações do banco de dados
host = 'localhost'
user = 'ti'
password = '@vale.123'
database = 'balanca'
mysqldump_path = r'C:\xampp\mysql\bin\mysqldump.exe'  # Caminho absoluto para o mysqldump

# Diretório onde o backup será salvo
backup_dir = r'C:\temp'
os.makedirs(backup_dir, exist_ok=True)  # Cria o diretório se não existir

# Gera um nome de arquivo baseado na data e hora atuais
backup_filename = f"{database}_backup_{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}.sql"
backup_path = os.path.join(backup_dir, backup_filename)

# Comando mysqldump para gerar o backup
dump_command = f'"{mysqldump_path}" --no-tablespaces -h {host} -u {user} -p{password} {database}'

# Executa o comando e captura erros
with open(backup_path, 'w', encoding='utf-8') as output_file:
    process = subprocess.Popen(dump_command, shell=True, stdout=output_file, stderr=subprocess.PIPE)
    _, errors = process.communicate()

# Verifica se ocorreram erros
if process.returncode != 0:
    print(f"Ocorreu um erro ao gerar o backup: {errors.decode('latin1')}")  # Para lidar com caracteres especiais
else:
    print(f"Backup do banco de dados '{database}' foi salvo como '{backup_path}'")
