#!/usr/bin/env python3 """ 将会话表 sessions 中所有会话置为失效(用于测试登录等场景)。 在 backend-client 目录下执行: python scripts/invalidate_all_sessions.py """ import sys from pathlib import Path # 将项目根加入 path sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) from app.database import SessionLocal from app.models.session import Session def main(): from app.utils.history import create_session_history db = SessionLocal() try: # 先写历史表,再改/删:将即将失效的会话写入 sessions_his sessions_to_invalidate = db.query(Session).filter(Session.is_active == True).all() for s in sessions_to_invalidate: create_session_history(db, s, "UPDATE") updated = db.query(Session).filter(Session.is_active == True).update( {"is_active": False}, synchronize_session=False ) db.commit() print(f"已将会话全部置为失效,影响行数: {updated}") except Exception as e: db.rollback() print(f"执行失败: {e}") raise finally: db.close() if __name__ == "__main__": main()