58 lines
2.0 KiB
Python
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검색 완료!')
|