import sqlite3

conn = sqlite3.connect('db.sqlite3')
cursor = conn.cursor()

try:
    # 禁用外键约束
    cursor.execute("PRAGMA foreign_keys = OFF")
    
    # 获取所有表名
    cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%';")
    tables = cursor.fetchall()
    print(f"找到 {len(tables)} 张表: {[t[0] for t in tables]}")  # 打印表名
    
    # 删除所有表数据
    for table in tables:
        table_name = table[0]
        print(f"正在清空表: {table_name}")  # 调试信息
        cursor.execute(f"DELETE FROM {table_name}")
        print(f"已删除 {cursor.rowcount} 行数据")  # 检查是否删除成功
        
    # 可选:重置自增主键
    cursor.execute("DELETE FROM sqlite_sequence")
    
    # 启用外键约束
    cursor.execute("PRAGMA foreign_keys = ON")
    
    conn.commit()
    print("数据已清空!")
except Exception as e:
    print(f"发生错误: {e}")
    conn.rollback()
finally:
    conn.close()