chore: 테스트 스크립트 gitignore 추가 및 추적 제거
This commit is contained in:
parent
9019347d48
commit
009d133aef
7
.gitignore
vendored
7
.gitignore
vendored
@ -87,5 +87,12 @@ tmp/
|
||||
*.tmp
|
||||
.claude/
|
||||
|
||||
# Test/Debug scripts (일회성 분석용)
|
||||
backend/scripts/check_*.py
|
||||
backend/scripts/find_*.py
|
||||
backend/scripts/search_*.py
|
||||
backend/scripts/compare_*.py
|
||||
backend/scripts/analyze_*.py
|
||||
|
||||
# GUI settings (user-specific)
|
||||
gui_settings.json
|
||||
|
||||
@ -1,82 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
CD_GOODS / CD_BARCODE에서 외부 DB와 매핑 가능한 키 분석
|
||||
"""
|
||||
import sys
|
||||
sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend')
|
||||
|
||||
from db.dbsetup import get_db_session
|
||||
from sqlalchemy import text
|
||||
|
||||
session = get_db_session('PM_DRUG')
|
||||
|
||||
print('=' * 60)
|
||||
print('=== CD_GOODS 주요 컬럼 (외부 매핑 후보) ===')
|
||||
print('=' * 60)
|
||||
|
||||
# CD_GOODS 샘플
|
||||
result = session.execute(text("""
|
||||
SELECT TOP 3
|
||||
DrugCode, GoodsName, BARCODE, BaseCode,
|
||||
SUNG_CODE, TITLECODE, EffctCode
|
||||
FROM CD_GOODS
|
||||
WHERE GoodsSelCode = 'B'
|
||||
ORDER BY DrugCode
|
||||
"""))
|
||||
|
||||
for row in result:
|
||||
print(f'\nDrugCode: {row.DrugCode}')
|
||||
print(f' GoodsName: {row.GoodsName}')
|
||||
print(f' BARCODE: {row.BARCODE or "(없음)"}')
|
||||
print(f' BaseCode: {row.BaseCode or "(없음)"}')
|
||||
print(f' SUNG_CODE: {row.SUNG_CODE or "(없음)"}')
|
||||
print(f' TITLECODE: {row.TITLECODE or "(없음)"}')
|
||||
|
||||
print('\n' + '=' * 60)
|
||||
print('=== CD_BARCODE 주요 컬럼 (외부 매핑 후보) ===')
|
||||
print('=' * 60)
|
||||
|
||||
# CD_BARCODE 샘플
|
||||
result2 = session.execute(text("""
|
||||
SELECT TOP 3
|
||||
DRUGCODE, BARCODE, BASECODE, ETCNAME, SPLNAME,
|
||||
SUNG_CODE, DIK_CODE, TITLECODE
|
||||
FROM CD_BARCODE
|
||||
WHERE BASECODE IS NOT NULL AND BASECODE != ''
|
||||
"""))
|
||||
|
||||
for row in result2:
|
||||
print(f'\nDRUGCODE: {row.DRUGCODE}')
|
||||
print(f' BARCODE: {row.BARCODE}')
|
||||
print(f' BASECODE: {row.BASECODE}')
|
||||
print(f' ETCNAME: {row.ETCNAME}')
|
||||
print(f' SPLNAME: {row.SPLNAME}')
|
||||
print(f' SUNG_CODE: {row.SUNG_CODE or "(없음)"}')
|
||||
print(f' DIK_CODE: {row.DIK_CODE or "(없음)"}')
|
||||
print(f' TITLECODE: {row.TITLECODE}')
|
||||
|
||||
print('\n' + '=' * 60)
|
||||
print('=== 매핑 키 후보 통계 ===')
|
||||
print('=' * 60)
|
||||
|
||||
# 각 코드 현황
|
||||
result3 = session.execute(text("""
|
||||
SELECT
|
||||
COUNT(*) as total,
|
||||
SUM(CASE WHEN BARCODE IS NOT NULL AND BARCODE != '' THEN 1 ELSE 0 END) as has_barcode,
|
||||
SUM(CASE WHEN BASECODE IS NOT NULL AND BASECODE != '' THEN 1 ELSE 0 END) as has_basecode,
|
||||
SUM(CASE WHEN SUNG_CODE IS NOT NULL AND SUNG_CODE != '' THEN 1 ELSE 0 END) as has_sungcode,
|
||||
SUM(CASE WHEN DIK_CODE IS NOT NULL AND DIK_CODE != '' THEN 1 ELSE 0 END) as has_dikcode,
|
||||
SUM(CASE WHEN TITLECODE IS NOT NULL AND TITLECODE != '' THEN 1 ELSE 0 END) as has_titlecode
|
||||
FROM CD_BARCODE
|
||||
"""))
|
||||
|
||||
row = result3.fetchone()
|
||||
print(f'\nCD_BARCODE 전체: {row.total:,}개')
|
||||
print(f' BARCODE 있음: {row.has_barcode:,}개 ({row.has_barcode/row.total*100:.1f}%)')
|
||||
print(f' BASECODE 있음: {row.has_basecode:,}개 ({row.has_basecode/row.total*100:.1f}%)')
|
||||
print(f' SUNG_CODE 있음: {row.has_sungcode:,}개 ({row.has_sungcode/row.total*100:.1f}%)')
|
||||
print(f' DIK_CODE 있음: {row.has_dikcode:,}개 ({row.has_dikcode/row.total*100:.1f}%)')
|
||||
print(f' TITLECODE 있음: {row.has_titlecode:,}개 ({row.has_titlecode/row.total*100:.1f}%)')
|
||||
|
||||
session.close()
|
||||
@ -1,53 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend')
|
||||
|
||||
from db.dbsetup import get_db_session
|
||||
from sqlalchemy import text
|
||||
|
||||
session = get_db_session('PM_DRUG')
|
||||
|
||||
# 동물약(POS_BOON='010103')을 CD_BARCODE와 JOIN해서 BASECODE 찾기
|
||||
print('=== 동물약 BASECODE 조회 (CD_GOODS + CD_BARCODE JOIN) ===\n')
|
||||
|
||||
result = session.execute(text("""
|
||||
SELECT
|
||||
g.DrugCode,
|
||||
g.GoodsName,
|
||||
g.BARCODE as goods_barcode,
|
||||
b.BARCODE as std_barcode,
|
||||
b.BASECODE,
|
||||
b.SUNG_CODE,
|
||||
b.DIK_CODE,
|
||||
b.ETCNAME
|
||||
FROM CD_GOODS g
|
||||
LEFT JOIN CD_BARCODE b ON g.DrugCode = b.DRUGCODE
|
||||
WHERE g.POS_BOON = '010103' AND g.GoodsSelCode = 'B'
|
||||
ORDER BY g.GoodsName
|
||||
"""))
|
||||
|
||||
found = 0
|
||||
not_found = 0
|
||||
|
||||
for row in result:
|
||||
if row.BASECODE:
|
||||
found += 1
|
||||
mark = '[O]'
|
||||
else:
|
||||
not_found += 1
|
||||
mark = '[X]'
|
||||
|
||||
print(f'{mark} {row.GoodsName}')
|
||||
print(f' DrugCode: {row.DrugCode}')
|
||||
print(f' CD_GOODS.BARCODE: {row.goods_barcode or "(없음)"}')
|
||||
if row.BASECODE:
|
||||
print(f' CD_BARCODE.BARCODE: {row.std_barcode}')
|
||||
print(f' BASECODE: {row.BASECODE}')
|
||||
print(f' SUNG_CODE: {row.SUNG_CODE}')
|
||||
print()
|
||||
|
||||
print('---')
|
||||
print(f'CD_BARCODE에서 찾음: {found}개')
|
||||
print(f'CD_BARCODE에 없음: {not_found}개')
|
||||
|
||||
session.close()
|
||||
@ -1,44 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend')
|
||||
|
||||
from db.dbsetup import get_db_session
|
||||
from sqlalchemy import text
|
||||
|
||||
session = get_db_session('PM_DRUG')
|
||||
|
||||
result = session.execute(text("""
|
||||
SELECT DrugCode, GoodsName, BARCODE, BaseCode
|
||||
FROM CD_GOODS
|
||||
WHERE POS_BOON = '010103' AND GoodsSelCode = 'B'
|
||||
ORDER BY GoodsName
|
||||
"""))
|
||||
|
||||
print('=== 동물약 바코드/표준코드 현황 ===\n')
|
||||
|
||||
barcode_count = 0
|
||||
basecode_count = 0
|
||||
total = 0
|
||||
|
||||
for row in result:
|
||||
barcode = row.BARCODE.strip() if row.BARCODE else ''
|
||||
basecode = row.BaseCode.strip() if row.BaseCode else ''
|
||||
|
||||
if barcode: barcode_count += 1
|
||||
if basecode: basecode_count += 1
|
||||
total += 1
|
||||
|
||||
b_mark = 'O' if barcode else 'X'
|
||||
c_mark = 'O' if basecode else 'X'
|
||||
print(f'{row.GoodsName}')
|
||||
print(f' DrugCode: {row.DrugCode}')
|
||||
print(f' Barcode: {b_mark} [{barcode}]')
|
||||
print(f' BaseCode: {c_mark} [{basecode}]')
|
||||
print()
|
||||
|
||||
print('---')
|
||||
print(f'Total: {total}개')
|
||||
print(f'With Barcode: {barcode_count}개')
|
||||
print(f'With BaseCode: {basecode_count}개')
|
||||
|
||||
session.close()
|
||||
@ -1,76 +0,0 @@
|
||||
# -*- 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
|
||||
|
||||
session = get_db_session('PM_DRUG')
|
||||
|
||||
print('=' * 60)
|
||||
print('=== 1. CD_GOODS 테이블 확인 (안텔민뽀삐) ===')
|
||||
print('=' * 60)
|
||||
|
||||
result = session.execute(text("""
|
||||
SELECT DrugCode, GoodsName, BARCODE, BaseCode
|
||||
FROM CD_GOODS
|
||||
WHERE DrugCode = 'LB000003158'
|
||||
"""))
|
||||
|
||||
for row in result:
|
||||
print(f'DrugCode: {row.DrugCode}')
|
||||
print(f'GoodsName: {row.GoodsName}')
|
||||
print(f'BARCODE: {row.BARCODE or "(없음)"}')
|
||||
print(f'BaseCode: {row.BaseCode or "(없음)"}')
|
||||
|
||||
print()
|
||||
print('=' * 60)
|
||||
print('=== 2. CD_BARCODE 테이블 확인 (DrugCode로 검색) ===')
|
||||
print('=' * 60)
|
||||
|
||||
result2 = session.execute(text("""
|
||||
SELECT *
|
||||
FROM CD_BARCODE
|
||||
WHERE DRUGCODE = 'LB000003158'
|
||||
"""))
|
||||
|
||||
columns = result2.keys()
|
||||
rows = list(result2)
|
||||
|
||||
if rows:
|
||||
for row in rows:
|
||||
print(f'\n--- 바코드 레코드 ---')
|
||||
for col in columns:
|
||||
val = getattr(row, col)
|
||||
if val:
|
||||
print(f' {col}: {val}')
|
||||
else:
|
||||
print('(CD_BARCODE에 레코드 없음)')
|
||||
|
||||
print()
|
||||
print('=' * 60)
|
||||
print('=== 3. CD_BARCODE에서 APC로 직접 검색 ===')
|
||||
print('=' * 60)
|
||||
|
||||
result3 = session.execute(text("""
|
||||
SELECT *
|
||||
FROM CD_BARCODE
|
||||
WHERE BARCODE = '0230237010107'
|
||||
OR BASECODE = '0230237010107'
|
||||
OR TITLECODE = '0230237010107'
|
||||
"""))
|
||||
|
||||
rows3 = list(result3)
|
||||
if rows3:
|
||||
for row in rows3:
|
||||
print(f'\n--- APC로 찾은 레코드 ---')
|
||||
for col in columns:
|
||||
val = getattr(row, col)
|
||||
if val:
|
||||
print(f' {col}: {val}')
|
||||
else:
|
||||
print('(APC로 검색된 레코드 없음)')
|
||||
|
||||
session.close()
|
||||
@ -1,64 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend')
|
||||
|
||||
from db.dbsetup import get_db_session
|
||||
from sqlalchemy import text
|
||||
|
||||
session = get_db_session('PM_DRUG')
|
||||
|
||||
# 1. BaseCode가 있는 제품 수 확인
|
||||
result = session.execute(text("""
|
||||
SELECT
|
||||
COUNT(*) as total,
|
||||
SUM(CASE WHEN BaseCode IS NOT NULL AND BaseCode != '' THEN 1 ELSE 0 END) as with_basecode
|
||||
FROM CD_GOODS
|
||||
WHERE GoodsSelCode = 'B'
|
||||
"""))
|
||||
row = result.fetchone()
|
||||
print(f'=== BaseCode 사용 현황 ===')
|
||||
print(f'판매중 전체 제품: {row.total}개')
|
||||
print(f'BaseCode 있는 제품: {row.with_basecode}개')
|
||||
print()
|
||||
|
||||
# 2. BaseCode가 있는 제품 샘플 (최대 20개)
|
||||
result2 = session.execute(text("""
|
||||
SELECT TOP 20 DrugCode, GoodsName, BaseCode, POS_BOON
|
||||
FROM CD_GOODS
|
||||
WHERE GoodsSelCode = 'B'
|
||||
AND BaseCode IS NOT NULL
|
||||
AND BaseCode != ''
|
||||
ORDER BY GoodsName
|
||||
"""))
|
||||
|
||||
print('=== BaseCode 있는 제품 샘플 ===')
|
||||
count = 0
|
||||
for row in result2:
|
||||
count += 1
|
||||
print(f'{row.GoodsName}')
|
||||
print(f' DrugCode: {row.DrugCode}')
|
||||
print(f' BaseCode: {row.BaseCode}')
|
||||
print(f' 분류: {row.POS_BOON}')
|
||||
print()
|
||||
|
||||
if count == 0:
|
||||
print('(BaseCode가 있는 제품이 없습니다)')
|
||||
|
||||
# 3. 분류별 BaseCode 사용 현황
|
||||
print('=== 분류(POS_BOON)별 BaseCode 현황 ===')
|
||||
result3 = session.execute(text("""
|
||||
SELECT
|
||||
POS_BOON,
|
||||
COUNT(*) as total,
|
||||
SUM(CASE WHEN BaseCode IS NOT NULL AND BaseCode != '' THEN 1 ELSE 0 END) as with_basecode
|
||||
FROM CD_GOODS
|
||||
WHERE GoodsSelCode = 'B'
|
||||
GROUP BY POS_BOON
|
||||
HAVING SUM(CASE WHEN BaseCode IS NOT NULL AND BaseCode != '' THEN 1 ELSE 0 END) > 0
|
||||
ORDER BY with_basecode DESC
|
||||
"""))
|
||||
|
||||
for row in result3:
|
||||
print(f'분류 {row.POS_BOON}: {row.with_basecode}/{row.total}개')
|
||||
|
||||
session.close()
|
||||
@ -1,26 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend')
|
||||
|
||||
from db.dbsetup import get_db_session
|
||||
from sqlalchemy import text
|
||||
|
||||
session = get_db_session('PM_DRUG')
|
||||
|
||||
result = session.execute(text("""
|
||||
SELECT
|
||||
COUNT(*) as total,
|
||||
SUM(CASE WHEN BASECODE IS NULL THEN 1 ELSE 0 END) as null_count,
|
||||
SUM(CASE WHEN BASECODE = '' THEN 1 ELSE 0 END) as empty_count,
|
||||
SUM(CASE WHEN BASECODE IS NOT NULL AND BASECODE != '' THEN 1 ELSE 0 END) as has_value
|
||||
FROM CD_BARCODE
|
||||
"""))
|
||||
|
||||
row = result.fetchone()
|
||||
print('=== CD_BARCODE.BASECODE 현황 ===')
|
||||
print(f'전체: {row.total:,}개')
|
||||
print(f'NULL: {row.null_count:,}개')
|
||||
print(f'빈문자열: {row.empty_count:,}개')
|
||||
print(f'값 있음: {row.has_value:,}개 ({row.has_value/row.total*100:.1f}%)')
|
||||
|
||||
session.close()
|
||||
@ -1,74 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend')
|
||||
|
||||
from db.dbsetup import get_db_session
|
||||
from sqlalchemy import text
|
||||
|
||||
# PM_DRUG, PM_PRES, PM_BASE 모든 DB 확인
|
||||
databases = ['PM_DRUG', 'PM_PRES', 'PM_BASE']
|
||||
|
||||
for db_name in databases:
|
||||
print(f'\n{"="*50}')
|
||||
print(f'=== {db_name} 데이터베이스 ===')
|
||||
print(f'{"="*50}')
|
||||
|
||||
try:
|
||||
session = get_db_session(db_name)
|
||||
|
||||
# 1. BaseCode 컬럼이 있는 테이블 찾기
|
||||
result = session.execute(text("""
|
||||
SELECT TABLE_NAME, COLUMN_NAME
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE COLUMN_NAME LIKE '%BaseCode%'
|
||||
OR COLUMN_NAME LIKE '%BASECODE%'
|
||||
OR COLUMN_NAME LIKE '%basecode%'
|
||||
ORDER BY TABLE_NAME
|
||||
"""))
|
||||
|
||||
tables = list(result)
|
||||
if tables:
|
||||
print(f'\nBaseCode 관련 컬럼 발견:')
|
||||
for row in tables:
|
||||
print(f' - {row.TABLE_NAME}.{row.COLUMN_NAME}')
|
||||
else:
|
||||
print(f'\nBaseCode 관련 컬럼 없음')
|
||||
|
||||
# 2. 표준코드 관련 컬럼 찾기 (Stand, Standard 등)
|
||||
result2 = session.execute(text("""
|
||||
SELECT TABLE_NAME, COLUMN_NAME
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE COLUMN_NAME LIKE '%Stand%'
|
||||
OR COLUMN_NAME LIKE '%Standard%'
|
||||
OR COLUMN_NAME LIKE '%KD%'
|
||||
ORDER BY TABLE_NAME
|
||||
"""))
|
||||
|
||||
tables2 = list(result2)
|
||||
if tables2:
|
||||
print(f'\n표준코드 관련 컬럼:')
|
||||
for row in tables2:
|
||||
print(f' - {row.TABLE_NAME}.{row.COLUMN_NAME}')
|
||||
|
||||
session.close()
|
||||
|
||||
except Exception as e:
|
||||
print(f'Error: {e}')
|
||||
|
||||
# 3. CD_GOODS의 BaseCode가 실제로 어떤 값인지 상위 10개 확인
|
||||
print(f'\n{"="*50}')
|
||||
print('=== CD_GOODS.BaseCode 샘플 데이터 ===')
|
||||
print(f'{"="*50}')
|
||||
|
||||
session = get_db_session('PM_DRUG')
|
||||
result = session.execute(text("""
|
||||
SELECT TOP 10 DrugCode, GoodsName, BaseCode
|
||||
FROM CD_GOODS
|
||||
ORDER BY DrugCode
|
||||
"""))
|
||||
|
||||
for row in result:
|
||||
bc = row.BaseCode if row.BaseCode else '(NULL/빈값)'
|
||||
print(f'{row.DrugCode}: BaseCode=[{bc}]')
|
||||
|
||||
session.close()
|
||||
@ -1,71 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend')
|
||||
|
||||
from db.dbsetup import get_db_session
|
||||
from sqlalchemy import text
|
||||
|
||||
session = get_db_session('PM_DRUG')
|
||||
|
||||
# 1. CD_BARCODE 테이블 구조
|
||||
print('=== CD_BARCODE 테이블 구조 ===')
|
||||
result = session.execute(text("""
|
||||
SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_NAME = 'CD_BARCODE'
|
||||
ORDER BY ORDINAL_POSITION
|
||||
"""))
|
||||
for row in result:
|
||||
print(f' {row.COLUMN_NAME} ({row.DATA_TYPE})')
|
||||
|
||||
# 2. CD_BARCODE 데이터 샘플
|
||||
print('\n=== CD_BARCODE 샘플 데이터 (BASECODE 있는 것) ===')
|
||||
result2 = session.execute(text("""
|
||||
SELECT TOP 20 *
|
||||
FROM CD_BARCODE
|
||||
WHERE BASECODE IS NOT NULL AND BASECODE != ''
|
||||
"""))
|
||||
|
||||
columns = result2.keys()
|
||||
print(f'컬럼: {list(columns)}')
|
||||
print()
|
||||
|
||||
count = 0
|
||||
for row in result2:
|
||||
count += 1
|
||||
print(f'--- Row {count} ---')
|
||||
for col in columns:
|
||||
val = getattr(row, col)
|
||||
if val:
|
||||
print(f' {col}: {val}')
|
||||
|
||||
if count == 0:
|
||||
print('(BASECODE가 있는 레코드 없음)')
|
||||
|
||||
# BASECODE 없어도 샘플 보기
|
||||
print('\n=== CD_BARCODE 전체 샘플 (상위 5개) ===')
|
||||
result3 = session.execute(text("""
|
||||
SELECT TOP 5 *
|
||||
FROM CD_BARCODE
|
||||
"""))
|
||||
for row in result3:
|
||||
print(f'---')
|
||||
for col in columns:
|
||||
val = getattr(row, col)
|
||||
print(f' {col}: {val}')
|
||||
|
||||
# 3. CD_BARCODE 전체 레코드 수
|
||||
print('\n=== CD_BARCODE 통계 ===')
|
||||
result4 = session.execute(text("""
|
||||
SELECT
|
||||
COUNT(*) as total,
|
||||
SUM(CASE WHEN BASECODE IS NOT NULL AND BASECODE != '' THEN 1 ELSE 0 END) as with_basecode,
|
||||
SUM(CASE WHEN DSTANDARD IS NOT NULL AND DSTANDARD != '' THEN 1 ELSE 0 END) as with_dstandard
|
||||
FROM CD_BARCODE
|
||||
"""))
|
||||
row = result4.fetchone()
|
||||
print(f'전체 레코드: {row.total}개')
|
||||
print(f'BASECODE 있음: {row.with_basecode}개')
|
||||
print(f'DSTANDARD 있음: {row.with_dstandard}개')
|
||||
|
||||
session.close()
|
||||
@ -1,53 +0,0 @@
|
||||
# -*- 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
|
||||
|
||||
session = get_db_session('PM_DRUG')
|
||||
|
||||
print('=== CD_GOODS (안텔민킹 - LB000003157) ===')
|
||||
result = session.execute(text("""
|
||||
SELECT DrugCode, GoodsName, BARCODE, BaseCode
|
||||
FROM CD_GOODS
|
||||
WHERE DrugCode = 'LB000003157'
|
||||
"""))
|
||||
|
||||
for row in result:
|
||||
print(f'DrugCode: {row.DrugCode}')
|
||||
print(f'GoodsName: {row.GoodsName}')
|
||||
print(f'BARCODE: [{row.BARCODE}]')
|
||||
print(f'BaseCode: [{row.BaseCode}]')
|
||||
|
||||
print('\n=== CD_BARCODE (DrugCode = LB000003157) ===')
|
||||
result2 = session.execute(text("""
|
||||
SELECT DRUGCODE, BARCODE, BASECODE, TITLECODE, ETCNAME
|
||||
FROM CD_BARCODE
|
||||
WHERE DRUGCODE = 'LB000003157'
|
||||
"""))
|
||||
|
||||
for row in result2:
|
||||
print(f'DRUGCODE: {row.DRUGCODE}')
|
||||
print(f'BARCODE: {row.BARCODE}')
|
||||
print(f'BASECODE: {row.BASECODE}')
|
||||
print(f'TITLECODE: {row.TITLECODE}')
|
||||
print(f'ETCNAME: {row.ETCNAME}')
|
||||
|
||||
print('\n=== APC로 직접 검색 ===')
|
||||
result3 = session.execute(text("""
|
||||
SELECT DRUGCODE, BARCODE, BASECODE, ETCNAME
|
||||
FROM CD_BARCODE
|
||||
WHERE BARCODE = '0230237010107'
|
||||
"""))
|
||||
|
||||
rows = list(result3)
|
||||
if rows:
|
||||
for row in rows:
|
||||
print(f'★ 발견! DRUGCODE: {row.DRUGCODE}, BARCODE: {row.BARCODE}')
|
||||
else:
|
||||
print('(APC로 검색 안됨)')
|
||||
|
||||
session.close()
|
||||
@ -1,74 +0,0 @@
|
||||
# -*- 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
|
||||
|
||||
session = get_db_session('PM_DRUG')
|
||||
|
||||
print('=== 안텔민킹 (LB000003157) 바코드 전체 조회 ===\n')
|
||||
|
||||
# 1. CD_SALEGOODS에서 같은 DrugCode로 여러 행?
|
||||
print('1. CD_SALEGOODS (DrugCode = LB000003157):')
|
||||
result = session.execute(text("""
|
||||
SELECT DrugCode, GoodsName, BARCODE
|
||||
FROM CD_SALEGOODS
|
||||
WHERE DrugCode = 'LB000003157'
|
||||
"""))
|
||||
for row in result:
|
||||
print(f' {row.BARCODE}')
|
||||
|
||||
# 2. 바코드 전용 테이블이 따로 있나?
|
||||
print('\n2. 바코드 관련 테이블에서 LB000003157 검색:')
|
||||
|
||||
tables = [
|
||||
'CD_BARCODE',
|
||||
'CD_Bundle',
|
||||
'CD_ITEM_UNIT_MEMBER',
|
||||
'CD_NameTag',
|
||||
'BI_DRUG_MAPPING',
|
||||
'PharmBridgeMapping'
|
||||
]
|
||||
|
||||
for tbl in tables:
|
||||
try:
|
||||
result = session.execute(text(f"""
|
||||
SELECT * FROM {tbl}
|
||||
WHERE DrugCode = 'LB000003157' OR DRUGCODE = 'LB000003157'
|
||||
"""))
|
||||
rows = list(result)
|
||||
if rows:
|
||||
print(f'\n ★ {tbl}: {len(rows)}개 발견!')
|
||||
for row in rows:
|
||||
print(f' {dict(row._mapping)}')
|
||||
except:
|
||||
pass
|
||||
|
||||
# 3. 바코드 값으로 역검색 (APC)
|
||||
print('\n3. APC 0230237810109 검색 (전체 테이블):')
|
||||
apc = '0230237810109'
|
||||
|
||||
for tbl in ['CD_GOODS', 'CD_SALEGOODS', 'CD_BARCODE', 'CD_Bundle', 'BI_DRUG_MAPPING', 'PharmBridgeMapping']:
|
||||
try:
|
||||
# 바코드 관련 컬럼 찾기
|
||||
cols = session.execute(text(f"""
|
||||
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_NAME = '{tbl}' AND COLUMN_NAME LIKE '%BARCODE%'
|
||||
"""))
|
||||
for col_row in cols:
|
||||
col = col_row.COLUMN_NAME
|
||||
result = session.execute(text(f"""
|
||||
SELECT * FROM {tbl} WHERE {col} = '{apc}'
|
||||
"""))
|
||||
rows = list(result)
|
||||
if rows:
|
||||
print(f' ★ {tbl}.{col}: {len(rows)}개!')
|
||||
for row in rows:
|
||||
print(f' {dict(row._mapping)}')
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
session.close()
|
||||
@ -1,24 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend')
|
||||
|
||||
from db.dbsetup import get_db_session
|
||||
from sqlalchemy import text
|
||||
|
||||
session = get_db_session('PM_DRUG')
|
||||
result = session.execute(text("""
|
||||
SELECT DrugCode, GoodsName
|
||||
FROM CD_GOODS
|
||||
WHERE DrugCode = 'LB000003158'
|
||||
"""))
|
||||
|
||||
row = result.fetchone()
|
||||
name = row.GoodsName
|
||||
print('GoodsName:', name)
|
||||
print('repr:', repr(name))
|
||||
|
||||
# 각 글자 확인
|
||||
for i, char in enumerate(name):
|
||||
print(f' [{i}] {char} = U+{ord(char):04X}')
|
||||
|
||||
session.close()
|
||||
@ -1,82 +0,0 @@
|
||||
# -*- 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
|
||||
|
||||
session = get_db_session('PM_DRUG')
|
||||
|
||||
apc = '0230237810109'
|
||||
|
||||
print(f'=== APC "{apc}" 검색 ===\n')
|
||||
|
||||
# 1. CD_GOODS에서 안텔민킹 확인
|
||||
print('1. CD_GOODS (안텔민킹):')
|
||||
result = session.execute(text("""
|
||||
SELECT DrugCode, GoodsName, BARCODE, BaseCode
|
||||
FROM CD_GOODS
|
||||
WHERE DrugCode = 'LB000003157'
|
||||
"""))
|
||||
for row in result:
|
||||
print(f' BARCODE: [{row.BARCODE}]')
|
||||
|
||||
# 2. CD_BARCODE에서 DRUGCODE로 검색
|
||||
print('\n2. CD_BARCODE (DRUGCODE=LB000003157):')
|
||||
result2 = session.execute(text("""
|
||||
SELECT DRUGCODE, BARCODE, BASECODE, ETCNAME
|
||||
FROM CD_BARCODE
|
||||
WHERE DRUGCODE = 'LB000003157'
|
||||
"""))
|
||||
rows = list(result2)
|
||||
if rows:
|
||||
for row in rows:
|
||||
print(f' BARCODE: {row.BARCODE}, BASECODE: {row.BASECODE}')
|
||||
else:
|
||||
print(' (없음)')
|
||||
|
||||
# 3. CD_BARCODE에서 APC 직접 검색
|
||||
print(f'\n3. CD_BARCODE에서 BARCODE="{apc}":')
|
||||
result3 = session.execute(text(f"""
|
||||
SELECT DRUGCODE, BARCODE, BASECODE, ETCNAME
|
||||
FROM CD_BARCODE
|
||||
WHERE BARCODE = '{apc}'
|
||||
"""))
|
||||
rows = list(result3)
|
||||
if rows:
|
||||
for row in rows:
|
||||
print(f' ★ 발견! DRUGCODE: {row.DRUGCODE}')
|
||||
else:
|
||||
print(' (없음)')
|
||||
|
||||
# 4. CD_GOODS에서 BARCODE로 검색
|
||||
print(f'\n4. CD_GOODS에서 BARCODE="{apc}":')
|
||||
result4 = session.execute(text(f"""
|
||||
SELECT DrugCode, GoodsName, BARCODE
|
||||
FROM CD_GOODS
|
||||
WHERE BARCODE = '{apc}'
|
||||
"""))
|
||||
rows = list(result4)
|
||||
if rows:
|
||||
for row in rows:
|
||||
print(f' ★ 발견! {row.DrugCode}: {row.GoodsName}')
|
||||
else:
|
||||
print(' (없음)')
|
||||
|
||||
# 5. 전체 DB에서 LIKE 검색
|
||||
print(f'\n5. 전체 LIKE 검색:')
|
||||
result5 = session.execute(text(f"""
|
||||
SELECT DrugCode, GoodsName, BARCODE
|
||||
FROM CD_GOODS
|
||||
WHERE BARCODE LIKE '%{apc}%'
|
||||
"""))
|
||||
rows = list(result5)
|
||||
if rows:
|
||||
for row in rows:
|
||||
print(f' ★ {row.DrugCode}: BARCODE=[{row.BARCODE}]')
|
||||
else:
|
||||
print(' (없음)')
|
||||
|
||||
session.close()
|
||||
@ -1,58 +0,0 @@
|
||||
# -*- 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
|
||||
|
||||
session = get_db_session('anipharmacopeia')
|
||||
|
||||
# 안텔민킹 APC로 검색
|
||||
apc = '0230237810109'
|
||||
|
||||
print(f'=== PostgreSQL에서 APC {apc} 조회 ===\n')
|
||||
|
||||
# anipharmacopeia 테이블 확인
|
||||
result = session.execute(text("""
|
||||
SELECT * FROM anipharmacopeia
|
||||
WHERE apc = :apc
|
||||
"""), {'apc': apc})
|
||||
|
||||
row = result.fetchone()
|
||||
if row:
|
||||
print('★ 발견!\n')
|
||||
cols = result.keys()
|
||||
for col in cols:
|
||||
val = getattr(row, col)
|
||||
if val:
|
||||
print(f' {col}: {val}')
|
||||
else:
|
||||
print('(없음)')
|
||||
|
||||
# 개/고양이 관련 컬럼 확인
|
||||
print('\n=== 개/고양이 관련 컬럼 확인 ===\n')
|
||||
result2 = session.execute(text("""
|
||||
SELECT column_name, data_type
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 'anipharmacopeia'
|
||||
AND (column_name LIKE '%dog%' OR column_name LIKE '%cat%'
|
||||
OR column_name LIKE '%canine%' OR column_name LIKE '%feline%'
|
||||
OR column_name LIKE '%animal%' OR column_name LIKE '%species%'
|
||||
OR column_name LIKE '%target%' OR column_name LIKE '%use%')
|
||||
"""))
|
||||
for r in result2:
|
||||
print(f' {r.column_name}: {r.data_type}')
|
||||
|
||||
# 전체 컬럼 목록
|
||||
print('\n=== 전체 컬럼 목록 ===\n')
|
||||
result3 = session.execute(text("""
|
||||
SELECT column_name FROM information_schema.columns
|
||||
WHERE table_name = 'anipharmacopeia'
|
||||
ORDER BY ordinal_position
|
||||
"""))
|
||||
for r in result3:
|
||||
print(f' {r.column_name}')
|
||||
|
||||
session.close()
|
||||
@ -1,26 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from sqlalchemy import create_engine, text
|
||||
|
||||
conn = create_engine('postgresql://admin:trajet6640@192.168.0.87:5432/apdb_master').connect()
|
||||
|
||||
# 안텔민 전체 - 유니코드 확인
|
||||
result = conn.execute(text("""
|
||||
SELECT apc, product_name
|
||||
FROM apc
|
||||
WHERE product_name ILIKE '%안텔민%'
|
||||
ORDER BY product_name
|
||||
"""))
|
||||
|
||||
print('=== PostgreSQL 안텔민 전체 (유니코드 확인) ===\n')
|
||||
for row in result:
|
||||
name = row.product_name
|
||||
print(f'APC: {row.apc}')
|
||||
print(f'Name: {name}')
|
||||
|
||||
# "사" 또는 "뽀" 글자 찾아서 유니코드 확인
|
||||
for i, c in enumerate(name):
|
||||
if c in ['사', '뽀', '삐', '킹']:
|
||||
print(f' [{i}] "{c}" = U+{ord(c):04X}')
|
||||
print()
|
||||
|
||||
conn.close()
|
||||
@ -1,32 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
import io
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
|
||||
|
||||
from sqlalchemy import create_engine, text
|
||||
|
||||
conn = create_engine('postgresql://admin:trajet6640@192.168.0.87:5432/apdb_master').connect()
|
||||
|
||||
print('=== apc 테이블 전체 컬럼 ===\n')
|
||||
result = conn.execute(text("""
|
||||
SELECT column_name, data_type
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 'apc'
|
||||
ORDER BY ordinal_position
|
||||
"""))
|
||||
for r in result:
|
||||
print(f' {r.column_name}: {r.data_type}')
|
||||
|
||||
# 안텔민킹 전체 데이터
|
||||
apc_code = '0230237810109'
|
||||
print(f'\n=== 안텔민킹 ({apc_code}) 전체 데이터 ===\n')
|
||||
result2 = conn.execute(text(f"SELECT * FROM apc WHERE apc = '{apc_code}'"))
|
||||
row = result2.fetchone()
|
||||
if row:
|
||||
cols = result2.keys()
|
||||
for col in cols:
|
||||
val = getattr(row, col)
|
||||
if val:
|
||||
print(f' {col}: {val}')
|
||||
|
||||
conn.close()
|
||||
@ -1,47 +0,0 @@
|
||||
# -*- 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
|
||||
|
||||
session = get_db_session('PM_DRUG')
|
||||
|
||||
print('=== CD_SALEGOODS 테이블 구조 ===\n')
|
||||
result = session.execute(text("""
|
||||
SELECT COLUMN_NAME, DATA_TYPE
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_NAME = 'CD_SALEGOODS'
|
||||
ORDER BY ORDINAL_POSITION
|
||||
"""))
|
||||
for row in result:
|
||||
print(f' {row.COLUMN_NAME}: {row.DATA_TYPE}')
|
||||
|
||||
print('\n=== CD_SALEGOODS에서 안텔민 검색 ===\n')
|
||||
result2 = session.execute(text("""
|
||||
SELECT *
|
||||
FROM CD_SALEGOODS
|
||||
WHERE DrugCode LIKE 'LB00000315%' OR BARCODE LIKE '0230237%'
|
||||
"""))
|
||||
|
||||
rows = list(result2)
|
||||
if rows:
|
||||
for row in rows:
|
||||
print(f'★ 발견!')
|
||||
print(f' {dict(row._mapping)}')
|
||||
else:
|
||||
print('(없음)')
|
||||
|
||||
print('\n=== CD_SALEGOODS 최근 데이터 (상위 10개) ===\n')
|
||||
result3 = session.execute(text("""
|
||||
SELECT TOP 10 *
|
||||
FROM CD_SALEGOODS
|
||||
ORDER BY DrugCode DESC
|
||||
"""))
|
||||
|
||||
for row in result3:
|
||||
print(dict(row._mapping))
|
||||
|
||||
session.close()
|
||||
@ -1,80 +0,0 @@
|
||||
# -*- 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
|
||||
|
||||
session = get_db_session('PM_DRUG')
|
||||
|
||||
print('=== CD_ITEM_UNIT_MEMBER 테이블 구조 ===\n')
|
||||
result = session.execute(text("""
|
||||
SELECT COLUMN_NAME, DATA_TYPE
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_NAME = 'CD_ITEM_UNIT_MEMBER'
|
||||
ORDER BY ORDINAL_POSITION
|
||||
"""))
|
||||
for row in result:
|
||||
print(f' {row.COLUMN_NAME}: {row.DATA_TYPE}')
|
||||
|
||||
print('\n=== 관계 확인: 안텔민킹 ===\n')
|
||||
|
||||
# CD_GOODS
|
||||
print('1. CD_GOODS:')
|
||||
result = session.execute(text("""
|
||||
SELECT DrugCode, GoodsName, BARCODE
|
||||
FROM CD_GOODS WHERE DrugCode = 'LB000003157'
|
||||
"""))
|
||||
for row in result:
|
||||
print(f' DrugCode: {row.DrugCode}')
|
||||
print(f' GoodsName: {row.GoodsName}')
|
||||
print(f' BARCODE: [{row.BARCODE}]')
|
||||
|
||||
# CD_SALEGOODS
|
||||
print('\n2. CD_SALEGOODS:')
|
||||
result = session.execute(text("""
|
||||
SELECT DrugCode, GoodsName, BARCODE
|
||||
FROM CD_SALEGOODS WHERE DrugCode = 'LB000003157'
|
||||
"""))
|
||||
for row in result:
|
||||
print(f' DrugCode: {row.DrugCode}')
|
||||
print(f' BARCODE: [{row.BARCODE}]')
|
||||
|
||||
# CD_ITEM_UNIT_MEMBER
|
||||
print('\n3. CD_ITEM_UNIT_MEMBER:')
|
||||
result = session.execute(text("""
|
||||
SELECT DRUGCODE, CD_CD_UNIT, CD_CD_BARCODE, CHANGE_DATE
|
||||
FROM CD_ITEM_UNIT_MEMBER
|
||||
WHERE DRUGCODE = 'LB000003157'
|
||||
ORDER BY SN DESC
|
||||
"""))
|
||||
for row in result:
|
||||
print(f' DRUGCODE: {row.DRUGCODE} | UNIT: {row.CD_CD_UNIT} | BARCODE: {row.CD_CD_BARCODE} | DATE: {row.CHANGE_DATE}')
|
||||
|
||||
# CD_SALEGOODS.BARCODE 와 CD_ITEM_UNIT_MEMBER.CD_CD_BARCODE 비교
|
||||
print('\n=== 다른 제품으로 관계 확인 (안텔민) ===\n')
|
||||
result = session.execute(text("""
|
||||
SELECT
|
||||
g.DrugCode,
|
||||
g.GoodsName,
|
||||
s.BARCODE as SALE_BARCODE,
|
||||
u.CD_CD_BARCODE as UNIT_BARCODE,
|
||||
u.CD_CD_UNIT
|
||||
FROM CD_GOODS g
|
||||
LEFT JOIN CD_SALEGOODS s ON g.DrugCode = s.DrugCode
|
||||
LEFT JOIN CD_ITEM_UNIT_MEMBER u ON g.DrugCode = u.DRUGCODE
|
||||
WHERE g.GoodsName LIKE N'%안텔민%'
|
||||
ORDER BY g.DrugCode, u.SN DESC
|
||||
"""))
|
||||
|
||||
current_drug = None
|
||||
for row in result:
|
||||
if row.DrugCode != current_drug:
|
||||
print(f'\n{row.DrugCode}: {row.GoodsName}')
|
||||
print(f' CD_SALEGOODS.BARCODE: {row.SALE_BARCODE}')
|
||||
current_drug = row.DrugCode
|
||||
print(f' └ CD_ITEM_UNIT_MEMBER: {row.UNIT_BARCODE} (UNIT: {row.CD_CD_UNIT})')
|
||||
|
||||
session.close()
|
||||
@ -1,64 +0,0 @@
|
||||
# -*- 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
|
||||
|
||||
session = get_db_session('PM_DRUG')
|
||||
|
||||
print('=== 테이블별 레코드 수 ===\n')
|
||||
|
||||
tables = ['CD_GOODS', 'CD_SALEGOODS', 'CD_BARCODE']
|
||||
for tbl in tables:
|
||||
result = session.execute(text(f"SELECT COUNT(*) as cnt FROM {tbl}"))
|
||||
cnt = result.fetchone().cnt
|
||||
print(f'{tbl}: {cnt:,}개')
|
||||
|
||||
print('\n=== 안텔민 비교 (CD_GOODS vs CD_SALEGOODS) ===\n')
|
||||
|
||||
# CD_GOODS
|
||||
print('CD_GOODS:')
|
||||
result = session.execute(text("""
|
||||
SELECT DrugCode, GoodsName, BARCODE
|
||||
FROM CD_GOODS
|
||||
WHERE GoodsName LIKE N'%안텔민%'
|
||||
"""))
|
||||
for row in result:
|
||||
print(f' {row.DrugCode}: {row.GoodsName} | BARCODE: [{row.BARCODE}]')
|
||||
|
||||
# CD_SALEGOODS
|
||||
print('\nCD_SALEGOODS:')
|
||||
result2 = session.execute(text("""
|
||||
SELECT DrugCode, GoodsName, BARCODE
|
||||
FROM CD_SALEGOODS
|
||||
WHERE GoodsName LIKE N'%안텔민%'
|
||||
"""))
|
||||
for row in result2:
|
||||
print(f' {row.DrugCode}: {row.GoodsName} | BARCODE: [{row.BARCODE}]')
|
||||
|
||||
# CD_BARCODE
|
||||
print('\nCD_BARCODE (안텔민 관련):')
|
||||
result3 = session.execute(text("""
|
||||
SELECT DRUGCODE, BARCODE, ETCNAME
|
||||
FROM CD_BARCODE
|
||||
WHERE ETCNAME LIKE N'%안텔민%'
|
||||
"""))
|
||||
rows = list(result3)
|
||||
if rows:
|
||||
for row in rows:
|
||||
print(f' {row.DRUGCODE}: {row.ETCNAME} | BARCODE: [{row.BARCODE}]')
|
||||
else:
|
||||
print(' (없음 - 동물약은 CD_BARCODE에 없음)')
|
||||
|
||||
print('\n=== CD_BARCODE는 어떤 용도? (샘플) ===\n')
|
||||
result4 = session.execute(text("""
|
||||
SELECT TOP 5 DRUGCODE, BARCODE, ETCNAME, CL_GUBUN
|
||||
FROM CD_BARCODE
|
||||
"""))
|
||||
for row in result4:
|
||||
print(f' {row.DRUGCODE}: {row.ETCNAME} | {row.CL_GUBUN}')
|
||||
|
||||
session.close()
|
||||
@ -1,26 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
import io
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
|
||||
|
||||
from sqlalchemy import create_engine, text
|
||||
|
||||
conn = create_engine('postgresql://admin:trajet6640@192.168.0.87:5432/apdb_master').connect()
|
||||
|
||||
# 안텔민 뽀삐 10정 검색
|
||||
result = conn.execute(text("""
|
||||
SELECT apc, product_name, image_url1, godoimage_url_f
|
||||
FROM apc
|
||||
WHERE product_name ILIKE '%안텔민%뽀삐%'
|
||||
AND product_name ILIKE '%10 정%'
|
||||
"""))
|
||||
|
||||
print('=== 안텔민 뽀삐 정 10정 APC ===\n')
|
||||
for row in result:
|
||||
print(f'★ APC: {row.apc}')
|
||||
print(f' 제품명: {row.product_name}')
|
||||
print(f' 이미지: {row.image_url1}')
|
||||
print(f' 고도몰: {row.godoimage_url_f}')
|
||||
print()
|
||||
|
||||
conn.close()
|
||||
@ -1,53 +0,0 @@
|
||||
# -*- 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
|
||||
|
||||
session = get_db_session('PM_DRUG')
|
||||
|
||||
print('=== PM_DRUG 전체 테이블 목록 ===\n')
|
||||
|
||||
result = session.execute(text("""
|
||||
SELECT TABLE_NAME
|
||||
FROM INFORMATION_SCHEMA.TABLES
|
||||
WHERE TABLE_TYPE = 'BASE TABLE'
|
||||
ORDER BY TABLE_NAME
|
||||
"""))
|
||||
|
||||
for row in result:
|
||||
print(row.TABLE_NAME)
|
||||
|
||||
print('\n=== BARCODE 관련 컬럼이 있는 테이블 ===\n')
|
||||
|
||||
result2 = session.execute(text("""
|
||||
SELECT TABLE_NAME, COLUMN_NAME
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE COLUMN_NAME LIKE '%BARCODE%' OR COLUMN_NAME LIKE '%BAR%'
|
||||
ORDER BY TABLE_NAME
|
||||
"""))
|
||||
|
||||
for row in result2:
|
||||
print(f'{row.TABLE_NAME}.{row.COLUMN_NAME}')
|
||||
|
||||
print('\n=== LB000003157 이 들어있는 테이블 찾기 ===\n')
|
||||
|
||||
# 주요 테이블들에서 검색
|
||||
tables_to_check = ['CD_GOODS', 'CD_BARCODE', 'CD_ETCGOODS', 'TEMP_ETCGOODS']
|
||||
|
||||
for tbl in tables_to_check:
|
||||
try:
|
||||
result = session.execute(text(f"""
|
||||
SELECT TOP 1 * FROM {tbl} WHERE DrugCode = 'LB000003157' OR DRUGCODE = 'LB000003157'
|
||||
"""))
|
||||
row = result.fetchone()
|
||||
if row:
|
||||
print(f'★ {tbl}: 발견!')
|
||||
print(f' {dict(row._mapping)}')
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
session.close()
|
||||
@ -1,85 +0,0 @@
|
||||
# -*- 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
|
||||
|
||||
session = get_db_session('PM_DRUG')
|
||||
|
||||
print('=' * 60)
|
||||
print('=== 1. CD_BARCODE 최근 추가된 행 (상위 20개) ===')
|
||||
print('=' * 60)
|
||||
|
||||
# ACTDATE가 최근인 것들
|
||||
result = session.execute(text("""
|
||||
SELECT TOP 20 DRUGCODE, BARCODE, BASECODE, ETCNAME, ACTDATE
|
||||
FROM CD_BARCODE
|
||||
ORDER BY ACTDATE DESC
|
||||
"""))
|
||||
|
||||
for row in result:
|
||||
print(f'{row.ACTDATE} | {row.DRUGCODE} | {row.BARCODE} | {row.ETCNAME}')
|
||||
|
||||
print('\n' + '=' * 60)
|
||||
print('=== 2. CD_BARCODE에서 "안텔민" 포함 (ETCNAME) ===')
|
||||
print('=' * 60)
|
||||
|
||||
result2 = session.execute(text("""
|
||||
SELECT DRUGCODE, BARCODE, BASECODE, ETCNAME
|
||||
FROM CD_BARCODE
|
||||
WHERE ETCNAME LIKE N'%안텔민%'
|
||||
"""))
|
||||
|
||||
rows = list(result2)
|
||||
if rows:
|
||||
for row in rows:
|
||||
print(f'{row.DRUGCODE} | {row.BARCODE} | {row.ETCNAME}')
|
||||
else:
|
||||
print('(없음)')
|
||||
|
||||
print('\n' + '=' * 60)
|
||||
print('=== 3. CD_GOODS에서 안텔민 BARCODE 확인 ===')
|
||||
print('=' * 60)
|
||||
|
||||
result3 = session.execute(text("""
|
||||
SELECT DrugCode, GoodsName, BARCODE
|
||||
FROM CD_GOODS
|
||||
WHERE GoodsName LIKE N'%안텔민%'
|
||||
"""))
|
||||
|
||||
for row in result3:
|
||||
print(f'{row.DrugCode} | {row.GoodsName} | BARCODE: [{row.BARCODE}]')
|
||||
|
||||
print('\n' + '=' * 60)
|
||||
print('=== 4. 0230237 로 시작하는 바코드 검색 ===')
|
||||
print('=' * 60)
|
||||
|
||||
result4 = session.execute(text("""
|
||||
SELECT DRUGCODE, BARCODE, ETCNAME
|
||||
FROM CD_BARCODE
|
||||
WHERE BARCODE LIKE '0230237%'
|
||||
"""))
|
||||
|
||||
rows = list(result4)
|
||||
if rows:
|
||||
for row in rows:
|
||||
print(f'{row.DRUGCODE} | {row.BARCODE} | {row.ETCNAME}')
|
||||
else:
|
||||
print('(없음)')
|
||||
|
||||
# CD_GOODS에서도
|
||||
result5 = session.execute(text("""
|
||||
SELECT DrugCode, GoodsName, BARCODE
|
||||
FROM CD_GOODS
|
||||
WHERE BARCODE LIKE '0230237%'
|
||||
"""))
|
||||
|
||||
rows = list(result5)
|
||||
if rows:
|
||||
for row in rows:
|
||||
print(f'{row.DrugCode} | {row.GoodsName} | {row.BARCODE}')
|
||||
|
||||
session.close()
|
||||
@ -1,57 +0,0 @@
|
||||
# -*- 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검색 완료!')
|
||||
@ -1,30 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
import io
|
||||
|
||||
# ═══════════════════════════════════════════════════════════
|
||||
# 인코딩 설정 (Windows CP949 문제 방지)
|
||||
# ═══════════════════════════════════════════════════════════
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
|
||||
sys.stderr = io.TextIOWrapper(sys.stderr.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
|
||||
|
||||
keyword = sys.argv[1] if len(sys.argv) > 1 else '안텔민'
|
||||
|
||||
session = get_db_session('PM_DRUG')
|
||||
result = session.execute(text(f"""
|
||||
SELECT DrugCode, GoodsName, BARCODE
|
||||
FROM CD_GOODS
|
||||
WHERE GoodsName LIKE N'%{keyword}%'
|
||||
"""))
|
||||
|
||||
print(f'=== MSSQL "{keyword}" 검색 ===')
|
||||
for row in result:
|
||||
bc = row.BARCODE if row.BARCODE else '(없음)'
|
||||
print(f'{row.DrugCode}: {row.GoodsName} | 바코드: {bc}')
|
||||
|
||||
session.close()
|
||||
Loading…
Reference in New Issue
Block a user