import sys, os sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..') from database import TradeDB db = TradeDB() try: # 빈 행 삭제 전 확인 empty = db.conn.execute(""" SELECT id, created_at FROM env_auth_config WHERE KIS_APP_KEY_REAL IS NULL AND KIS_APP_KEY IS NULL AND KIWOOM_APP_KEY_REAL IS NULL AND LS_APP_KEY_REAL IS NULL ORDER BY id """).fetchall() print(f"[삭제 대상 빈 행] {len(empty)}개:") for r in empty: print(f" id={dict(r)['id']} created_at={dict(r)['created_at']}") # 삭제 ids = [dict(r)['id'] for r in empty] if ids: placeholders = ','.join(['%s'] * len(ids)) db.conn.execute(f"DELETE FROM env_auth_config WHERE id IN ({placeholders})", ids) db.conn.commit() print(f"\n✅ {len(ids)}개 빈 행 삭제 완료: {ids}") # 최종 상태 확인 print("\n[삭제 후 최근 5행]") rows = db.conn.execute(""" SELECT id, created_at, KIS_APP_KEY_REAL, KIS_APP_KEY_OB_REAL FROM env_auth_config ORDER BY id DESC LIMIT 5 """).fetchall() for r in rows: d = dict(r) for k in ['KIS_APP_KEY_REAL','KIS_APP_KEY_OB_REAL']: v = d.get(k) d[k] = (v[:6]+'...') if v else 'NULL' print(f" id={d['id']} created_at={d['created_at']} KEY_REAL={d['KIS_APP_KEY_REAL']} OB_REAL={d['KIS_APP_KEY_OB_REAL']}") finally: db.close()