151 lines
6.0 KiB
Python
151 lines
6.0 KiB
Python
#!/usr/bin/env python3
|
|
import os
|
|
import sys
|
|
import django
|
|
|
|
# プロジェクト設定
|
|
sys.path.append('/app')
|
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
|
|
django.setup()
|
|
|
|
from django.db import connection
|
|
import logging
|
|
|
|
# ログ設定
|
|
logging.basicConfig(level=logging.INFO)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
def analyze_event_data_raw():
|
|
"""生のSQLを使ってイベント・チーム・エントリーデータを分析"""
|
|
|
|
print("=== 生SQLによるイベント・データ分析 ===")
|
|
|
|
with connection.cursor() as cursor:
|
|
# 1. NewEvent2テーブルの構造確認
|
|
print("\n1. rog_newevent2テーブル構造:")
|
|
cursor.execute("""
|
|
SELECT column_name, data_type, is_nullable
|
|
FROM information_schema.columns
|
|
WHERE table_name = 'rog_newevent2'
|
|
ORDER BY ordinal_position;
|
|
""")
|
|
columns = cursor.fetchall()
|
|
for col in columns:
|
|
print(f" - {col[0]}: {col[1]} ({'NULL' if col[2] == 'YES' else 'NOT NULL'})")
|
|
|
|
# 2. 全イベント一覧
|
|
print("\n2. 全イベント一覧:")
|
|
cursor.execute("""
|
|
SELECT id, event_name, event_day, venue_address
|
|
FROM rog_newevent2
|
|
ORDER BY id;
|
|
""")
|
|
events = cursor.fetchall()
|
|
|
|
for event in events:
|
|
print(f" - ID:{event[0]}, Name:{event[1]}, Date:{event[2]}, Venue:{event[3]}")
|
|
|
|
# 各イベントのエントリー数とチーム数
|
|
cursor.execute("SELECT COUNT(*) FROM rog_entry WHERE event_id = %s", [event[0]])
|
|
entry_count = cursor.fetchone()[0]
|
|
|
|
cursor.execute("SELECT COUNT(*) FROM rog_team WHERE event_id = %s", [event[0]])
|
|
team_count = cursor.fetchone()[0]
|
|
|
|
print(f" Entry:{entry_count}, Team:{team_count}")
|
|
|
|
# 3. FC岐阜関連イベント検索
|
|
print("\n3. FC岐阜関連イベント検索:")
|
|
cursor.execute("""
|
|
SELECT id, event_name, event_day, venue_address
|
|
FROM rog_newevent2
|
|
WHERE event_name ILIKE %s OR event_name ILIKE %s OR event_name ILIKE %s
|
|
ORDER BY id;
|
|
""", ['%FC岐阜%', '%fc岐阜%', '%岐阜%'])
|
|
|
|
fc_events = cursor.fetchall()
|
|
if fc_events:
|
|
for event in fc_events:
|
|
print(f" - ID:{event[0]}, Name:{event[1]}, Date:{event[2]}")
|
|
|
|
# 関連エントリー
|
|
cursor.execute("""
|
|
SELECT e.id, t.id as team_id, t.name as team_name, t.zekken_number
|
|
FROM rog_entry e
|
|
JOIN rog_team t ON e.team_id = t.id
|
|
WHERE e.event_id = %s
|
|
LIMIT 10;
|
|
""", [event[0]])
|
|
|
|
entries = cursor.fetchall()
|
|
if entries:
|
|
print(" エントリー詳細:")
|
|
for entry in entries:
|
|
print(f" Entry ID:{entry[0]}, Team ID:{entry[1]}, Team:{entry[2]}, Zekken:{entry[3]}")
|
|
|
|
# 関連チーム(ゼッケン番号付き)
|
|
cursor.execute("""
|
|
SELECT id, name, zekken_number
|
|
FROM rog_team
|
|
WHERE event_id = %s AND zekken_number IS NOT NULL AND zekken_number != ''
|
|
LIMIT 10;
|
|
""", [event[0]])
|
|
|
|
teams_with_zekken = cursor.fetchall()
|
|
if teams_with_zekken:
|
|
print(" ゼッケン番号付きチーム:")
|
|
for team in teams_with_zekken:
|
|
print(f" Team ID:{team[0]}, Name:{team[1]}, Zekken:{team[2]}")
|
|
else:
|
|
print(" ゼッケン番号付きチームが見つかりません")
|
|
else:
|
|
print(" FC岐阜関連イベントが見つかりません")
|
|
|
|
# 4. 全体のゼッケン番号付きチーム確認
|
|
print("\n4. 全体のゼッケン番号付きチーム状況:")
|
|
cursor.execute("""
|
|
SELECT COUNT(*)
|
|
FROM rog_team
|
|
WHERE zekken_number IS NOT NULL AND zekken_number != '';
|
|
""")
|
|
zekken_team_count = cursor.fetchone()[0]
|
|
print(f" ゼッケン番号付きチーム総数: {zekken_team_count}")
|
|
|
|
if zekken_team_count > 0:
|
|
cursor.execute("""
|
|
SELECT t.id, t.name, t.zekken_number, e.event_name
|
|
FROM rog_team t
|
|
LEFT JOIN rog_newevent2 e ON t.event_id = e.id
|
|
WHERE t.zekken_number IS NOT NULL AND t.zekken_number != ''
|
|
LIMIT 10;
|
|
""")
|
|
|
|
sample_teams = cursor.fetchall()
|
|
print(" サンプル:")
|
|
for team in sample_teams:
|
|
print(f" ID:{team[0]}, Name:{team[1]}, Zekken:{team[2]}, Event:{team[3]}")
|
|
|
|
# 5. 通過審査管理画面で使われる可能性のあるクエリの確認
|
|
print("\n5. 通過審査管理用データ確認:")
|
|
cursor.execute("""
|
|
SELECT e.id as event_id, e.event_name, COUNT(t.id) as team_count,
|
|
COUNT(CASE WHEN t.zekken_number IS NOT NULL AND t.zekken_number != '' THEN 1 END) as zekken_teams
|
|
FROM rog_newevent2 e
|
|
LEFT JOIN rog_team t ON e.id = t.event_id
|
|
GROUP BY e.id, e.event_name
|
|
ORDER BY e.id;
|
|
""")
|
|
|
|
event_stats = cursor.fetchall()
|
|
print(" イベント別チーム・ゼッケン統計:")
|
|
for stat in event_stats:
|
|
print(f" イベントID:{stat[0]}, Name:{stat[1]}, 総チーム:{stat[2]}, ゼッケン付き:{stat[3]}")
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
analyze_event_data_raw()
|
|
except Exception as e:
|
|
print(f"❌ エラーが発生しました: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|