reset_accounts.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #!/usr/bin/env python3
  2. """
  3. 重新启用所有账号的脚本
  4. 将所有账号的 enabled 设置为 1,保留错误和成功次数
  5. """
  6. import sqlite3
  7. from pathlib import Path
  8. from datetime import datetime
  9. DB_PATH = Path(__file__).resolve().parent.parent / "data.sqlite3"
  10. def reset_all_accounts():
  11. """重新启用所有账号(不重置错误和成功次数)"""
  12. if not DB_PATH.exists():
  13. print(f"错误: 数据库文件不存在: {DB_PATH}")
  14. return
  15. conn = sqlite3.connect(DB_PATH)
  16. cursor = conn.cursor()
  17. try:
  18. # 获取当前禁用的账号数量
  19. cursor.execute("SELECT COUNT(*) FROM accounts WHERE enabled=0")
  20. disabled_count = cursor.fetchone()[0]
  21. # 获取总账号数量
  22. cursor.execute("SELECT COUNT(*) FROM accounts")
  23. total_count = cursor.fetchone()[0]
  24. print(f"数据库中共有 {total_count} 个账号")
  25. print(f"其中 {disabled_count} 个账号已被禁用")
  26. if disabled_count == 0:
  27. print("所有账号都已启用,无需操作")
  28. return
  29. # 只重新启用账号,不重置错误和成功次数
  30. now = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S")
  31. cursor.execute("""
  32. UPDATE accounts
  33. SET enabled=1, updated_at=?
  34. WHERE enabled=0
  35. """, (now,))
  36. conn.commit()
  37. print(f"✓ 已重新启用 {disabled_count} 个账号")
  38. print("✓ 保留了所有账号的错误和成功次数")
  39. # 显示更新后的状态
  40. cursor.execute("""
  41. SELECT id, label, enabled, error_count, success_count
  42. FROM accounts
  43. ORDER BY created_at DESC
  44. """)
  45. rows = cursor.fetchall()
  46. print("\n当前账号状态:")
  47. print("-" * 80)
  48. print(f"{'ID':<38} {'标签':<20} {'启用':<6} {'错误':<6} {'成功':<6}")
  49. print("-" * 80)
  50. for row in rows:
  51. acc_id, label, enabled, error_count, success_count = row
  52. label = label or "(无标签)"
  53. enabled_str = "是" if enabled else "否"
  54. print(f"{acc_id:<38} {label:<20} {enabled_str:<6} {error_count or 0:<6} {success_count or 0:<6}")
  55. finally:
  56. cursor.close()
  57. conn.close()
  58. def main():
  59. print("=" * 80)
  60. print("重新启用所有账号")
  61. print("=" * 80)
  62. print()
  63. try:
  64. reset_all_accounts()
  65. except Exception as e:
  66. print(f"错误: {e}")
  67. import traceback
  68. traceback.print_exc()
  69. return 1
  70. print()
  71. print("=" * 80)
  72. print("操作完成")
  73. print("=" * 80)
  74. return 0
  75. if __name__ == "__main__":
  76. exit(main())