kdrug-inventory-system/update_ssanghwatang_danggui.py
시골약사 95df32c14d fix: 기존 처방 약재 및 효능 정보 수정
- 쌍화탕: 당귀 → 일당귀로 수정
- 월비탕: 진피초 → 진피(陳皮)로 수정
- 십전대보탕: 각 약재별 효능 설명 추가
  - 보음보혈, 보혈지통, 대보원기 등 11개 약재 효능 추가

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

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

118 lines
4.1 KiB
Python

#!/usr/bin/env python3
"""
쌍화탕 처방의 당귀를 일당귀로 수정
"""
import sqlite3
def update_danggui():
"""쌍화탕의 당귀를 일당귀로 수정"""
conn = sqlite3.connect('database/kdrug.db')
cursor = conn.cursor()
try:
# 현재 쌍화탕에 등록된 당귀 확인
print("🔍 현재 쌍화탕 처방의 당귀 확인...")
cursor.execute("""
SELECT f.formula_name, fi.ingredient_code, hm.herb_name, fi.grams_per_cheop
FROM formulas f
JOIN formula_ingredients fi ON f.formula_id = fi.formula_id
JOIN herb_masters hm ON fi.ingredient_code = hm.ingredient_code
WHERE f.formula_name LIKE '%쌍화%'
AND hm.herb_name LIKE '%당귀%'
""")
current = cursor.fetchall()
print(f"현재 상태:")
for name, code, herb, amount in current:
print(f" - {name}: {herb} ({code}) - {amount}g")
# 당귀(3105H1AHM)를 일당귀(3403H1AHM)로 변경
print(f"\n✏️ 당귀(3105H1AHM) → 일당귀(3403H1AHM)로 변경 중...")
# 쌍화탕 처방 ID 확인
cursor.execute("""
SELECT formula_id
FROM formulas
WHERE formula_name LIKE '%쌍화%'
""")
formula_ids = [row[0] for row in cursor.fetchall()]
if formula_ids:
# 당귀를 일당귀로 수정
cursor.execute("""
UPDATE formula_ingredients
SET ingredient_code = '3403H1AHM'
WHERE ingredient_code = '3105H1AHM'
AND formula_id IN ({})
""".format(','.join('?' * len(formula_ids))), formula_ids)
updated_count = cursor.rowcount
print(f"{updated_count}개 항목 수정됨")
# 변경 후 확인
print(f"\n🔍 수정 후 확인...")
cursor.execute("""
SELECT f.formula_name, fi.ingredient_code, hm.herb_name, fi.grams_per_cheop
FROM formulas f
JOIN formula_ingredients fi ON f.formula_id = fi.formula_id
JOIN herb_masters hm ON fi.ingredient_code = hm.ingredient_code
WHERE f.formula_name LIKE '%쌍화%'
AND hm.herb_name LIKE '%당귀%'
""")
updated = cursor.fetchall()
print(f"수정된 상태:")
for name, code, herb, amount in updated:
print(f" - {name}: {herb} ({code}) - {amount}g")
conn.commit()
print(f"\n✅ 쌍화탕 당귀 수정 완료!")
# 전체 처방 구성 확인
print(f"\n📋 수정된 쌍화탕 전체 구성:")
print("-"*60)
for formula_id in formula_ids:
cursor.execute("""
SELECT f.formula_name
FROM formulas f
WHERE f.formula_id = ?
""", (formula_id,))
formula_name = cursor.fetchone()[0]
print(f"\n{formula_name}:")
cursor.execute("""
SELECT hm.herb_name, fi.grams_per_cheop, fi.notes
FROM formula_ingredients fi
JOIN herb_masters hm ON fi.ingredient_code = hm.ingredient_code
WHERE fi.formula_id = ?
ORDER BY fi.sort_order
""", (formula_id,))
for herb, amount, notes in cursor.fetchall():
marker = "" if herb == "일당귀" else " "
print(f" {marker} {herb}: {amount}g ({notes if notes else ''})")
else:
print("❌ 쌍화탕 처방을 찾을 수 없습니다.")
except sqlite3.Error as e:
print(f"❌ 데이터베이스 오류: {e}")
conn.rollback()
return False
finally:
conn.close()
return True
if __name__ == "__main__":
print("🌿 쌍화탕 당귀 수정 프로그램")
print("="*60)
if update_danggui():
print("\n✅ 수정 작업이 완료되었습니다.")
else:
print("\n❌ 수정 중 오류가 발생했습니다.")