pharmacy-pos-qr-system/backend/scripts/search_apc_everywhere.py

58 lines
2.0 KiB
Python

# -*- coding: utf-8 -*-
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend')
from db.dbsetup import get_db_session
from sqlalchemy import text
apc = '0230237010107'
for db_name in ['PM_DRUG', 'PM_PRES', 'PM_BASE']:
print(f'\n{"="*60}')
print(f'=== {db_name} 데이터베이스에서 "{apc}" 검색 ===')
print(f'{"="*60}')
try:
session = get_db_session(db_name)
# 모든 테이블에서 해당 값 검색
tables = session.execute(text("""
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
"""))
for table_row in tables:
table_name = table_row.TABLE_NAME
# 각 테이블의 문자열 컬럼에서 검색
try:
columns = session.execute(text(f"""
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '{table_name}'
AND DATA_TYPE IN ('varchar', 'nvarchar', 'char', 'nchar', 'text')
"""))
for col_row in columns:
col_name = col_row.COLUMN_NAME
try:
result = session.execute(text(f"""
SELECT TOP 1 * FROM [{table_name}]
WHERE [{col_name}] = '{apc}'
"""))
row = result.fetchone()
if row:
print(f'\n★ 발견! {table_name}.{col_name}')
print(f' 레코드: {dict(row._mapping)}')
except:
pass
except:
pass
session.close()
except Exception as e:
print(f'Error: {e}')
print('\n검색 완료!')