데이터베이스 연구실.log

pandas로 조회 결과 처리

DataFrame 구성, 결측값을 지원하는 정수형과 출력 변환, 수집기의 실제 판정 구현과 추가 표 출력은 확인 불가

pandasDataFrameNaN실수형 변환판정 기준표본 비교정규화to_string

#핵심 요약

실습 모니터에서 수집기(collector.py)와 화면(app.py) 사이에 오가는 것은 DataFrame 표 하나임

실습 3초 루프는 SQL 실행 결과를 DataFrame으로 만든 뒤 "10초 넘게 실행 중" 같은 기준과 비교해 악성 여부를 판정함

빈 칸이 섞인 숫자 열은 pandas가 실수로 바꿔, 진단 문구에 "SID 149.0"처럼 소수점이 붙었음
실습에서는 진단 문구의 SID를 정수로 표시하도록 고쳤음

이행 점검에서 두 드라이버가 돌려준 값을 비교할 때는 CHAR 뒷공백 제거, 숫자 Decimal 정규화, 날짜 ISO 문자열로 모양을 맞춘 뒤 비교했음

#개념과 동작 원리

실습 도구 pandas가 맡은 일
미니 오라클 게이지, PG 게이지 V$ 뷰, 통계 뷰 조회 결과를 표로 만들고 판정 기준과 비교
세션 상세, 진단 SQL 전문과 실행계획을 꺼내 진단 문장 생성
미니 마이그레이터 분석, 검증, 점검 결과 표(화면 표시)

실습 확인 스크립트에서 ts.to_string(index=False)로 테이블스페이스 결과를 인덱스 없이 출력한 예만 있음

#판정 기준

기준 값
실행 시간 10초 이상
세션 논리 읽기 100만 블록 이상
블로킹 다른 세션을 막고 있음

기준은 사이드바에서 바꿈
판정 결과가 화면에 어떻게 이어지는지는 문제 SQL 탐지와 세션 진단에 있음

#주요 용어와 구성 요소

구문 의미
DataFrame 행 레코드와 열 이름을 결합한 표이며 DB 열 순서와 이름을 맞춰야 함
Int64와 int64 대문자 Int64는 결측값을 지원하는 확장 정수형임

#필수 명령어 또는 SQL

항목 실행 조건
작업 대상 이미 조회한 레코드의 DataFrame 구성과 문자열 표시
필요 권한 준비된 조회 레코드 접근 권한, DB 조회 단계는 별도 계정 권한 필요
바꿀 입력값 rows, columns, coerce_float, index, na_rep 표시 옵션
결과 해석 DataFrame 구성과 문자열 표시 예제임
실제 표와 진단 결과는 기재 없음
Python (pandas 설치, 조회 레코드 rows·열 이름 columns 준비 후)조회만 함
import pandas as pd

df = pd.DataFrame.from_records(rows, columns=columns, coerce_float=False)
text = df.to_string(index=False)

결과 해석: 조회 레코드를 표로 만들고 행 인덱스 없는 문자열로 표현하는 형태이며 실제 표, 판정 출력은 기재 없음

#구문과 옵션 설명

from_records의 columns는 열 이름과 순서를 정하며 coerce_float=True는 Decimal 같은 객체의 부동소수점 변환을 시도함
to_string의 index=False는 인덱스 표시만 숨기며 데이터 열을 제거하지 않음
na_rep는 문자열 출력의 결측 표기 옵션이며 저장된 결측을 실제 값으로 채우는 기능이 아님

#사용 조건과 주의사항

실습 7단계는 "SID 149.0" 문제를 표의 빈 칸 때문에 pandas가 숫자를 실수로 바꾼 것이라고 설명했음
NaN을 사용하는 정수 배열은 실수형으로 바뀔 수 있음
nullable 정수형 Int64는 pandas.NA로 결측을 표현하는 별도 타입임

같은 이유로 SQL 문장이 빈 세션의 sql_text가 문자열이 아닌 값으로 들어와 앞 60글자를 자르다 TypeError가 났음
실습에서는 문자열이 아니면 빈 칸으로 보여 주도록 고쳤음

이행 검증의 표본 비교에서 같은 값도 다르게 나올 수 있는 원인은 CHAR 뒷공백, 숫자 자릿수(10과 10.00), 날짜 타입임
세부는 이행 검증과 점검 리포트에 있음

식별자, 정밀 숫자의 표시 변환과 데이터 변환을 구분함
Int64 지정은 정수로 표현할 수 있는 값에 한해 검토하며 실습 수집기의 실제 변환 코드는 확인 불가

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기