137 lines
5.7 KiB
Python
137 lines
5.7 KiB
Python
#!/usr/bin/env python
|
|
"""
|
|
データベース接続状況とold_rogdbデータ確認スクリプト
|
|
現在のDB接続状況を確認し、old_rogdbの実際のデータを調査
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
import django
|
|
|
|
if __name__ == '__main__':
|
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
|
|
django.setup()
|
|
|
|
from django.db import connection, connections
|
|
from django.conf import settings
|
|
|
|
print("=== データベース接続状況確認 ===")
|
|
|
|
try:
|
|
# 現在のデータベース設定を確認
|
|
print("\\n1. Django設定確認:")
|
|
databases = settings.DATABASES
|
|
for db_name, config in databases.items():
|
|
print(f" {db_name}: {config.get('NAME', 'Unknown')} @ {config.get('HOST', 'localhost')}")
|
|
|
|
with connection.cursor() as cursor:
|
|
# 現在接続しているデータベース名を確認
|
|
cursor.execute("SELECT current_database();")
|
|
current_db = cursor.fetchone()[0]
|
|
print(f"\\n2. 現在接続中のDB: {current_db}")
|
|
|
|
# データベース内のテーブル一覧確認
|
|
cursor.execute("""
|
|
SELECT table_name
|
|
FROM information_schema.tables
|
|
WHERE table_schema = 'public'
|
|
AND table_name LIKE '%rog%'
|
|
ORDER BY table_name;
|
|
""")
|
|
tables = cursor.fetchall()
|
|
print(f"\\n3. rogaine関連テーブル:")
|
|
for table in tables:
|
|
print(f" - {table[0]}")
|
|
|
|
# old_rogdbスキーマまたはテーブルの存在確認
|
|
cursor.execute("""
|
|
SELECT schemaname, tablename, hasindexes, hasrules, hastriggers
|
|
FROM pg_tables
|
|
WHERE tablename LIKE '%rog%'
|
|
ORDER BY schemaname, tablename;
|
|
""")
|
|
all_rog_tables = cursor.fetchall()
|
|
print(f"\\n4. 全スキーマのrog関連テーブル:")
|
|
for schema, table, idx, rules, triggers in all_rog_tables:
|
|
print(f" {schema}.{table}")
|
|
|
|
# データ存在確認
|
|
print(f"\\n5. 現在のデータ状況:")
|
|
|
|
# rog_entry データ確認
|
|
try:
|
|
cursor.execute("SELECT COUNT(*) FROM rog_entry;")
|
|
entry_count = cursor.fetchone()[0]
|
|
print(f" rog_entry: {entry_count}件")
|
|
|
|
if entry_count > 0:
|
|
cursor.execute("SELECT * FROM rog_entry LIMIT 3;")
|
|
sample_entries = cursor.fetchall()
|
|
print(" サンプルエントリー:")
|
|
for entry in sample_entries:
|
|
print(f" ID:{entry[0]}, Team:{entry[5]}, Event:{entry[3]}")
|
|
|
|
except Exception as e:
|
|
print(f" rog_entry エラー: {e}")
|
|
|
|
# rog_team データ確認
|
|
try:
|
|
cursor.execute("SELECT COUNT(*) FROM rog_team;")
|
|
team_count = cursor.fetchone()[0]
|
|
print(f" rog_team: {team_count}件")
|
|
|
|
if team_count > 0:
|
|
cursor.execute("SELECT id, team_name, zekken_number FROM rog_team WHERE zekken_number IS NOT NULL AND zekken_number != '' LIMIT 5;")
|
|
sample_teams = cursor.fetchall()
|
|
print(" ゼッケン付きチーム:")
|
|
for team in sample_teams:
|
|
print(f" ID:{team[0]}, Name:{team[1]}, Zekken:{team[2]}")
|
|
|
|
except Exception as e:
|
|
print(f" rog_team エラー: {e}")
|
|
|
|
# もしold_rogdbが別のスキーマにある場合
|
|
print(f"\\n6. 別スキーマのold_rogdbデータ確認:")
|
|
try:
|
|
# old_rogdbスキーマが存在するかチェック
|
|
cursor.execute("""
|
|
SELECT schema_name
|
|
FROM information_schema.schemata
|
|
WHERE schema_name LIKE '%old%' OR schema_name LIKE '%rog%';
|
|
""")
|
|
schemas = cursor.fetchall()
|
|
print(" 利用可能なスキーマ:")
|
|
for schema in schemas:
|
|
print(f" - {schema[0]}")
|
|
|
|
# old_rogdbスキーマがある場合、そのデータを確認
|
|
for schema in schemas:
|
|
schema_name = schema[0]
|
|
if 'old' in schema_name.lower():
|
|
try:
|
|
cursor.execute(f"SELECT COUNT(*) FROM {schema_name}.rog_entry;")
|
|
old_entry_count = cursor.fetchone()[0]
|
|
print(f" {schema_name}.rog_entry: {old_entry_count}件")
|
|
except Exception as e:
|
|
print(f" {schema_name}.rog_entry: アクセスエラー - {e}")
|
|
|
|
except Exception as e:
|
|
print(f" スキーマ確認エラー: {e}")
|
|
|
|
# old_rogdbが別のデータベースの場合の確認
|
|
print(f"\\n7. 利用可能なデータベース一覧:")
|
|
cursor.execute("""
|
|
SELECT datname
|
|
FROM pg_database
|
|
WHERE datistemplate = false
|
|
ORDER BY datname;
|
|
""")
|
|
databases = cursor.fetchall()
|
|
for db in databases:
|
|
print(f" - {db[0]}")
|
|
|
|
except Exception as e:
|
|
print(f"❌ エラーが発生しました: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|