#!/usr/bin/env python3 """Безопасная проверка структуры базы данных""" import psycopg2 from urllib.parse import unquote # Параметры подключения DB_HOST = "147.45.189.234" DB_PORT = 5432 DB_NAME = "default_db" DB_USER = "gen_user" DB_PASSWORD = unquote("2~~9_%5EkVsU%3F2%5CS") print("Подключаюсь к базе данных...") print(f"Host: {DB_HOST}") print(f"Database: {DB_NAME}") print(f"User: {DB_USER}") print() try: conn = psycopg2.connect( host=DB_HOST, port=DB_PORT, database=DB_NAME, user=DB_USER, password=DB_PASSWORD ) cur = conn.cursor() # Проверяем версию PostgreSQL cur.execute("SELECT version();") version = cur.fetchone()[0] print(f"PostgreSQL версия: {version.split(',')[0]}") print() # Проверяем размер базы cur.execute(""" SELECT pg_size_pretty(pg_database_size(current_database())); """) db_size = cur.fetchone()[0] print(f"Размер базы: {db_size}") print() # Проверяем существующие таблицы cur.execute(""" SELECT schemaname, tablename, pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) as size FROM pg_tables WHERE schemaname NOT IN ('pg_catalog', 'information_schema') ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC LIMIT 20; """) tables = cur.fetchall() print("=== Существующие таблицы (топ 20 по размеру) ===") if tables: for schema, table, size in tables: print(f" {schema}.{table} - {size}") else: print(" Пользовательских таблиц не найдено") print() # Проверяем есть ли таблицы с префиксом hotel cur.execute(""" SELECT tablename FROM pg_tables WHERE schemaname = 'public' AND tablename LIKE 'hotel%'; """) hotel_tables = cur.fetchall() if hotel_tables: print("=== Таблицы с префиксом 'hotel' ===") for (table,) in hotel_tables: print(f" {table}") print() # Проверяем лимиты подключений cur.execute(""" SELECT setting FROM pg_settings WHERE name = 'max_connections'; """) max_conn = cur.fetchone()[0] print(f"Максимум подключений: {max_conn}") cur.execute(""" SELECT count(*) FROM pg_stat_activity; """) active_conn = cur.fetchone()[0] print(f"Активных подключений: {active_conn}") print() print("✓ Подключение успешно! База в порядке.") cur.close() conn.close() except Exception as e: print(f"✗ Ошибка подключения: {e}") exit(1)