37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
"""learning.experience_logs 를 company_id 별로 집계 출력 (DB 격리 확인용).
|
|
|
|
실행: cd agent && APP_ENV=local python -m tools.show_logs
|
|
"""
|
|
|
|
import asyncio
|
|
|
|
from sqlalchemy import func, select
|
|
|
|
from common.database.db_session_manager import DB_SESSION_MNG
|
|
from common.database.model.models import ExperienceLog
|
|
from common.enums import DBType, DBWRType
|
|
|
|
|
|
async def main():
|
|
def q(s):
|
|
stmt = (
|
|
select(ExperienceLog.company_id, func.count().label("n"), func.max(ExperienceLog.reward).label("max_reward"))
|
|
.group_by(ExperienceLog.company_id)
|
|
.order_by(ExperienceLog.company_id)
|
|
)
|
|
return DB_SESSION_MNG.execute(s, stmt)
|
|
|
|
err, rows = await DB_SESSION_MNG.execute_lambda(DBType.MAIN.value, DBWRType.DB_READ.value, q)
|
|
print("company_id count max_reward")
|
|
print("-" * 44)
|
|
for company_id, n, max_reward in rows:
|
|
mr = f"{max_reward:+.4f}" if max_reward is not None else " n/a "
|
|
print(f"{company_id:<20} {n:>6} {mr}")
|
|
if not rows:
|
|
print("(비어있음 — 먼저 tools.console_demo 를 실행하세요)")
|
|
await DB_SESSION_MNG.dispose_all()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|