#!/usr/bin/env python """ old_rogdb から新しいデータベースへのエントリーデータ移行スクリプト rog_entry テーブルのデータを NewEvent2 システムに移行 """ import os import sys import django from datetime import datetime if __name__ == '__main__': os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings') django.setup() from django.db import connection from rog.models import NewEvent2, Entry, Team, NewCategory, CustomUser print("=== old_rogdb エントリーデータ移行 ===") try: # old_rogdb の rog_entry データを確認 print("old_rogdb の rog_entry データを確認中...") with connection.cursor() as cursor: # rog_entry テーブルの構造とデータを確認 cursor.execute(""" SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'rog_entry' ORDER BY ordinal_position; """) columns = cursor.fetchall() print("✅ rog_entry テーブル構造:") for col_name, data_type in columns: print(f" - {col_name}: {data_type}") # データ件数確認 cursor.execute("SELECT COUNT(*) FROM rog_entry;") entry_count = cursor.fetchone()[0] print(f"✅ rog_entry データ件数: {entry_count}件") # サンプルデータ確認 cursor.execute(""" SELECT id, team_id, event_id, category_id, date, zekken_number, zekken_label, is_active FROM rog_entry LIMIT 5; """) sample_data = cursor.fetchall() print("\\n✅ サンプルデータ:") for row in sample_data: print(f" ID:{row[0]}, Team:{row[1]}, Event:{row[2]}, Category:{row[3]}, Zekken:{row[5]}") # イベント情報の確認 cursor.execute(""" SELECT e.id, e.event_name, COUNT(re.id) as entry_count FROM rog_newevent2 e LEFT JOIN rog_entry re ON e.id = re.event_id GROUP BY e.id, e.event_name HAVING COUNT(re.id) > 0 ORDER BY entry_count DESC; """) event_data = cursor.fetchall() print("\\n✅ エントリーがあるイベント:") for event_id, event_name, count in event_data: print(f" Event ID:{event_id} '{event_name}': {count}件") # FC岐阜イベントのエントリー確認 cursor.execute(""" SELECT re.id, re.zekken_number, re.zekken_label, t.team_name, c.category_name FROM rog_entry re JOIN rog_newevent2 e ON re.event_id = e.id JOIN rog_team t ON re.team_id = t.id JOIN rog_newcategory c ON re.category_id = c.id WHERE e.event_name LIKE '%FC岐阜%' ORDER BY re.zekken_number LIMIT 10; """) fc_entries = cursor.fetchall() print("\\n✅ FC岐阜イベントのエントリー(最初の10件):") for entry_id, zekken, label, team_name, category in fc_entries: print(f" ゼッケン{zekken}: {team_name} ({category})") except Exception as e: print(f"❌ エラーが発生しました: {e}") import traceback traceback.print_exc()