\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
| Path : /var/www/html/yedekledb24/DatabaseBackupMaster/ |
|
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()