- 개발/테스트 스크립트를 dev_scripts/ 폴더로 이동 - 스크린샷을 screenshots/ 폴더로 이동 - 백업 파일 보존 (.backup) - 처방 관련 추가 스크립트 포함 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
121 lines
3.7 KiB
Python
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() |