kdrug-inventory-system/check_formula_columns.py
시골약사 124bc5eaf8 feat: 처방 주요 효능(efficacy) 필드 추가 및 UI 개선
- DB: formulas 테이블에 efficacy 칼럼 추가
- API: 처방 생성/수정/조회 시 efficacy 필드 처리
- UI: 처방 등록/수정 모달에 주요 효능 입력 필드 추가
- UI: 처방 상세 화면에 주요 효능 표시
- 기존 처방들의 주요 효능 데이터 입력 완료

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-18 04:39:05 +00:00

121 lines
3.7 KiB
Python

#!/usr/bin/env python3
"""
formulas 테이블의 칼럼 구조 확인
"""
import sqlite3
def check_formula_structure():
"""formulas 테이블의 전체 구조 확인"""
conn = sqlite3.connect('database/kdrug.db')
cursor = conn.cursor()
print("🔍 formulas 테이블 구조 확인")
print("="*70)
# 테이블 구조 확인
cursor.execute("PRAGMA table_info(formulas)")
columns = cursor.fetchall()
print("\n📊 formulas 테이블 칼럼 목록:")
print("-"*70)
print(f"{'번호':>4} | {'칼럼명':20} | {'타입':15} | {'NULL 허용':10} | {'기본값'}")
print("-"*70)
efficacy_columns = []
for col in columns:
cid, name, type_name, notnull, dflt_value, pk = col
null_str = "NOT NULL" if notnull else "NULL"
default_str = dflt_value if dflt_value else "-"
print(f"{cid:4d} | {name:20} | {type_name:15} | {null_str:10} | {default_str}")
# 효능 관련 칼럼 찾기
if 'efficacy' in name.lower() or 'indication' in name.lower() or '효능' in name:
efficacy_columns.append(name)
print("\n" + "="*70)
if efficacy_columns:
print(f"✅ 효능 관련 칼럼 발견: {', '.join(efficacy_columns)}")
else:
print("❌ 효능 관련 칼럼이 없습니다.")
# 실제 데이터 예시 확인
print("\n📋 십전대보탕 데이터 예시:")
print("-"*70)
cursor.execute("""
SELECT * FROM formulas
WHERE formula_code = 'SJDB01'
""")
row = cursor.fetchone()
if row:
col_names = [description[0] for description in cursor.description]
for i, (col_name, value) in enumerate(zip(col_names, row)):
if value and value != 0: # 값이 있는 경우만 표시
print(f"{col_name:25}: {str(value)[:100]}")
# prescription_details 테이블도 확인
print("\n\n🔍 prescription_details 테이블 확인 (혹시 여기 있는지)")
print("="*70)
cursor.execute("""
SELECT name FROM sqlite_master
WHERE type='table' AND name='prescription_details'
""")
if cursor.fetchone():
cursor.execute("PRAGMA table_info(prescription_details)")
columns = cursor.fetchall()
print("📊 prescription_details 테이블 칼럼:")
print("-"*70)
for col in columns:
cid, name, type_name, notnull, dflt_value, pk = col
if 'efficacy' in name.lower() or 'indication' in name.lower():
print(f"{name}: {type_name}")
# formula_details 테이블도 확인
print("\n\n🔍 formula_details 테이블 확인")
print("="*70)
cursor.execute("""
SELECT name FROM sqlite_master
WHERE type='table' AND name='formula_details'
""")
if cursor.fetchone():
cursor.execute("PRAGMA table_info(formula_details)")
columns = cursor.fetchall()
print("📊 formula_details 테이블 칼럼:")
print("-"*70)
for col in columns:
cid, name, type_name, notnull, dflt_value, pk = col
print(f" {name}: {type_name}")
# 실제 데이터 확인
cursor.execute("""
SELECT * FROM formula_details
WHERE formula_id = (SELECT formula_id FROM formulas WHERE formula_code = 'SJDB01')
""")
row = cursor.fetchone()
if row:
print("\n십전대보탕 상세 정보:")
col_names = [description[0] for description in cursor.description]
for col_name, value in zip(col_names, row):
if value:
print(f" {col_name}: {str(value)[:100]}")
else:
print("❌ formula_details 테이블이 없습니다.")
conn.close()
if __name__ == "__main__":
check_formula_structure()