\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/DatabaseBackupMasterv6/
(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/DatabaseBackupMasterv6/generate_schema.py


#!/usr/bin/env python3
"""
Bu script, veritabanı şemasını ve gerekli SQL komutlarını oluşturur.
pg_dump kullanılamadığı durumlar için alternatif bir çözümdür.
"""

import os
import datetime
from dotenv import load_dotenv
from app import app, db

# .env dosyasından ortam değişkenlerini yükleyin
load_dotenv()

# Yedek dosyasının adını tarih-saat ile oluşturun
TIMESTAMP = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')
BACKUP_DIR = 'database_backups'
SCHEMA_FILE = f"{BACKUP_DIR}/schema_{TIMESTAMP}.sql"

def generate_schema():
    """Veritabanı şemasını ve gerekli SQL komutlarını oluşturur"""
    
    # Yedekleme dizinini oluşturun (yoksa)
    os.makedirs(BACKUP_DIR, exist_ok=True)
    
    # Flask uygulama bağlamını oluşturun
    with app.app_context():
        # Tablo listesini ve sütunlarını alın
        from sqlalchemy import inspect
        inspector = inspect(db.engine)
        tables = inspector.get_table_names()
        
        # SQL dosyasını oluşturun
        with open(SCHEMA_FILE, 'w') as f:
            # Header
            f.write("-- Database Backup Sistemi Schema\n")
            f.write(f"-- Oluşturulma Tarihi: {datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n\n")
            
            # Drop statements
            f.write("-- Drop existing tables (if exist)\n")
            for table in reversed(tables):  # Yabancı anahtar kısıtlamaları için tabloları ters sırada kaldırın
                f.write(f"DROP TABLE IF EXISTS {table} CASCADE;\n")
            f.write("\n")
            
            # Create statements
            for table in tables:
                columns = inspector.get_columns(table)
                pk_constraint = inspector.get_pk_constraint(table)
                pk_columns = pk_constraint.get('constrained_columns', []) if pk_constraint else []
                foreign_keys = inspector.get_foreign_keys(table)
                
                f.write(f"-- Table: {table}\n")
                f.write(f"CREATE TABLE {table} (\n")
                
                # Column definitions
                column_defs = []
                for col in columns:
                    col_name = col['name']
                    col_type = str(col['type'])
                    nullable = "NULL" if col['nullable'] else "NOT NULL"
                    default = f"DEFAULT {col['default']}" if col['default'] else ""
                    pk = "PRIMARY KEY" if col_name in pk_columns else ""
                    
                    col_def = f"    {col_name} {col_type} {nullable} {default} {pk}".strip()
                    column_defs.append(col_def)
                
                # Foreign key constraints
                for fk in foreign_keys:
                    fk_name = fk.get('name', '')
                    referred_table = fk.get('referred_table', '')
                    constrained_columns = fk.get('constrained_columns', [])
                    referred_columns = fk.get('referred_columns', [])
                    
                    if constrained_columns and referred_columns:
                        fk_def = f"    CONSTRAINT {fk_name} FOREIGN KEY ({', '.join(constrained_columns)}) REFERENCES {referred_table} ({', '.join(referred_columns)})"
                        column_defs.append(fk_def)
                
                f.write(',\n'.join(column_defs))
                f.write("\n);\n\n")
                
                # Index statements
                indexes = inspector.get_indexes(table)
                for idx in indexes:
                    idx_name = idx.get('name', '')
                    unique = "UNIQUE" if idx.get('unique', False) else ""
                    columns = idx.get('column_names', [])
                    
                    if columns:
                        f.write(f"CREATE {unique} INDEX {idx_name} ON {table} ({', '.join(columns)});\n")
                
                f.write("\n")
                
            # Ekstra bilgileri ekleyin
            f.write("-- DATABASE BACKUP SYSTEM INITIAL SETUP COMPLETE\n")
            f.write("-- RUN THE FOLLOWING COMMAND TO RESTORE THIS SCHEMA:\n")
            f.write(f"-- python import_database.py {SCHEMA_FILE}\n")
        
        print(f"Veritabanı şeması başarıyla oluşturuldu: {SCHEMA_FILE}")

if __name__ == "__main__":
    generate_schema()

© KUJUNTI.ID