| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- #!/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()
|