import sqlite3 import os db_files = [ r'./qple_quiz.db', r'./qple_quiz_corrupted.db.bak', r'./qple_quiz_0621.db' ] for db in db_files: if not os.path.exists(db): print(f"File not found: {db}") continue print(f"\nDB: {db} (Size: {os.path.getsize(db)} bytes)") try: conn = sqlite3.connect(db) cursor = conn.cursor() # list tables cursor.execute("SELECT name FROM sqlite_master WHERE type='table';") tables = [row[0] for row in cursor.fetchall()] print(" Tables:", tables) for t in ['QuizQuestions', 'QuizExplain', 'Bookmark', 'DescriptiveGrading']: if t in tables: cursor.execute(f"SELECT COUNT(*) FROM {t};") cnt = cursor.fetchone()[0] print(f" {t}: {cnt} rows") # if QuizQuestions, list source counts if t == 'QuizQuestions': cursor.execute("PRAGMA table_info(QuizQuestions);") cols = [c[1] for c in cursor.fetchall()] print(f" Columns: {cols}") cursor.execute("SELECT source, COUNT(*), MIN(id), MAX(id) FROM QuizQuestions GROUP BY source;") src_cnt = cursor.fetchall() print(f" QuizQuestions breakdown: {src_cnt}") elif t == 'QuizExplain': # check if source column exists cursor.execute("PRAGMA table_info(QuizExplain);") cols = [c[1] for c in cursor.fetchall()] print(f" Columns: {cols}") if 'source' in cols: cursor.execute("SELECT source, COUNT(*), MIN(id), MAX(id) FROM QuizExplain GROUP BY source;") print(f" QuizExplain breakdown: {cursor.fetchall()}") else: cursor.execute("SELECT COUNT(*), MIN(id), MAX(id) FROM QuizExplain;") print(f" QuizExplain (no source): {cursor.fetchall()}") elif t == 'Bookmark': cursor.execute("PRAGMA table_info(Bookmark);") cols = [c[1] for c in cursor.fetchall()] print(f" Columns: {cols}") if 'source' in cols: cursor.execute("SELECT source, COUNT(*), MIN(question_id), MAX(question_id) FROM Bookmark GROUP BY source;") print(f" Bookmark breakdown: {cursor.fetchall()}") else: cursor.execute("SELECT COUNT(*), MIN(question_id), MAX(question_id) FROM Bookmark;") print(f" Bookmark (no source): {cursor.fetchall()}") elif t == 'DescriptiveGrading': cursor.execute("PRAGMA table_info(DescriptiveGrading);") cols = [c[1] for c in cursor.fetchall()] print(f" Columns: {cols}") if 'source' in cols: cursor.execute("SELECT source, COUNT(*) FROM DescriptiveGrading GROUP BY source;") print(f" DescriptiveGrading breakdown: {cursor.fetchall()}") else: cursor.execute("SELECT COUNT(*) FROM DescriptiveGrading;") print(f" DescriptiveGrading (no source): {cursor.fetchall()}") conn.close() except Exception as e: print(f" Error inspecting: {e}")