2025/04 21

Oracle DB에서 저장 프로시저 호출 및 동적 데이터 처리 방법

Oracle 데이터베이스에서 저장 프로시저를 호출하고, 결과가 없을 경우 동적으로 대체 데이터를 생성하는 방법을 소개합니다. 이 글에서는 Python의 oracledb 모듈을 활용해 저장 프로시저를 호출하고, 결과 데이터를 분석하며, 필요 시 랜덤 데이터를 생성해 쿼리를 실행하는 과정을 세련되게 정리했습니다. 초보자부터 숙련자까지 참고할 수 있도록 코드와 출력 예시를 포함했습니다.1. Oracle DB 연결 및 저장 프로시저 호출먼저, Oracle DB에 연결하고 저장 프로시저를 호출하는 기본 구조를 살펴보겠습니다. 아래 코드는 oracledb 모듈을 사용해 DB에 연결하고, 특정 저장 프로시저(NEXTPOT.STP_STK_050101_LST_01)를 호출합니다. CREATE OR REPLACE PRO..

파이썬으로 오라클 스토어드 프로시저 실행하기: 다중 IN/OUT 파라미터와 커서 열 타입 출력 (0개 행 포함)

오라클 스토어드 프로시저에서 SYS_REFCURSOR로 반환되는 emp_names가 0개 행을 반환하더라도, 반환되는 열(first_name, last_name, age)의 데이터 타입(예: VARCHAR2, DECIMAL)을 출력하는 방법을 구현하겠습니다. 이를 위해 oracledb의 커서 객체에서 열 메타데이터를 추출하여 각 열의 데이터 타입을 확인합니다. 또한, 다중 IN/OUT 파라미터를 처리하고, 모든 파라미터의 값, 길이, 타입을 출력합니다. 핵심 아이디어SQL 파일 읽기: 스토어드 프로시저의 SQL 코드가 담긴 파일을 읽어옵니다.데이터베이스 연결: oracledb로 오라클 데이터베이스에 연결합니다.스토어드 프로시저 실행: SQL 코드를 실행해 프로시저를 생성합니다.다중 IN/OUT 처리: 여..

Vue 3 <script setup>과 TypeScript로 부모-자식 컴포넌트 간 함수 호출 구현 (공통 타입 분리)

Vue 3의 설명:DataStructure를 ../types/DataStructure에서 임포트합니다.processData 함수는 DataStructure 타입의 데이터를 받아 처리합니다.defineExpose로 processData를 부모 컴포넌트에서 접근 가능하도록 노출합니다.설명:DataStructure를 ../types/DataStructure에서 임포트합니다.parentData는 DataStructure 타입으로 정의됩니다.ref로 자식 컴포넌트를 참조하며, InstanceType으로 타입을 명시합니다.handleButtonClick은 자식 컴포넌트의 processData 함수를 호출합니다.5. 동작 원리부모 컴포넌트에서 버튼을 클릭하면 handleButtonClick이 실행됩니다.childRe..

파이썬으로 디렉토리 내 파일의 문자열 처리 및 갱신하기 (재귀 호출 방식)

특정 디렉토리 내 모든 파일을 읽어 문자열의 마지막 스페이스를 제거하고, 탭을 4개의 스페이스로 변환한 뒤 파일을 갱신하는 파이썬 코드를 재귀 호출 방식으로 수정해 작성하겠습니다. 이 코드는 하위 디렉토리를 직접 재귀적으로 탐색하며 텍스트 파일을 처리합니다.코드 설명재귀 디렉토리 순회: os.listdir와 재귀 호출을 사용해 디렉토리와 하위 디렉토리를 탐색.파일 읽기/수정: 각 파일을 읽어 문자열을 처리한 후 원본 파일에 덮어씌움.문자열 처리:문자열 끝의 공백 제거: rstrip() 사용.탭을 4개의 스페이스로 변환: replace('\t', ' ') 사용.에러 처리: 파일 읽기/쓰기 중 발생할 수 있는 오류를 처리.파이썬 코드import osdef process_file(file_path): t..

Vue 3와 Vuetify로 구현하는 부모-자식 컴포넌트 간 RESTful 데이터 바인딩: 탭 기반 테이블과 상세 뷰

Vue 3에서 Composition API와 TypeScript를 사용해 RESTful API 데이터를 부모 컴포넌트에서 호출하고, 자식 컴포넌트 두 개(테이블 그리드와 상세 뷰)를 탭으로 구분해 바인딩하는 방법을 소개합니다. Vuetify를 활용해 깔끔한 UI를 구현하며, 실용적인 예제를 통해 배우고자 하는 분들께 도움이 되고자 합니다.이번 예제에서는 부모 컴포넌트에서 검색어 입력과 버튼으로 데이터를 가져오고, 두 자식 컴포넌트가 각각 데이터를 테이블 형태와 클릭 시 개별 행의 상세 정보를 표시하는 방식으로 동작합니다. Vuetify의 탭과 그리드 컴포넌트를 사용해 직관적인 UI를 구성합니다.프로젝트 개요우리의 목표는 다음과 같습니다:부모 컴포넌트: 검색어 입력 필드와 버튼으로 RESTful API 호..

바이브 코딩(Vibe Coding): AI와 함께하는 새로운 프로그래밍 패러다임

1. 바이브 코딩이란 무엇인가?바이브 코딩(Vibe Coding)은 인공지능(AI), 특히 대규모 언어 모델(LLM)을 활용해 자연어로 소프트웨어를 개발하는 혁신적인 프로그래밍 방식이다. 전통적인 코딩이 문법과 논리를 하나하나 작성하는 데 초점을 맞췄다면, 바이브 코딩은 개발자가 원하는 기능이나 아이디어를 자연어로 설명하면 AI가 이를 코드로 변환하는 방식이다. 이 용어는 2025년 2월, OpenAI 공동 창립자이자 테슬라의 전 AI 리더인 안드레이 카르파티(Andrej Karpathy)가 처음 소개하며 화제가 되었다. 그는 이를 “코드의 존재를 잊고 느낌(바이브)에 몸을 맡기는 코딩”이라고 표현했다.바이브 코딩은 단순히 코드를 작성하는 도구를 넘어, 프로그래밍의 진입 장벽을 낮추고 비전문가도 소프트웨..

카테고리 없음 2025.04.23

MCP 구축과 활용: 커서와 파이썬을 활용한 상세 가이드

MCP란 무엇인가?**모델 컨텍스트 프로토콜(Model Context Protocol, MCP)**는 AI 모델이 외부 데이터 소스나 도구와 표준화된 방식으로 상호작용할 수 있도록 설계된 오픈 소스 프로토콜입니다. Anthropic이 2024년 11월에 공개한 MCP는 AI가 실시간 데이터, 웹 API, 데이터베이스, 파일 시스템 등 다양한 리소스에 접근하도록 도와줍니다. 이를 통해 AI의 한계를 극복하고 더 강력하고 유연한 애플리케이션 구축이 가능해졌습니다. MCP는 마치 "AI의 USB-C 포트"처럼, 다양한 시스템과 AI를 연결하는 표준화된 통로 역할을 합니다.이 블로그에서는 MCP를 **커서(Cursor)**와 파이썬을 활용해 구축하고 사용하는 방법을 상세히 다루며, 다양한 활용 사례를 소개합니다..

Python 패키지 관리자 uv: 속도와 편리함의 새로운 표준

Python 개발 환경에서 패키지 관리와 프로젝트 설정은 필수적이지만, 기존 도구들(pip, Poetry, Conda 등)은 느린 의존성 해결, 복잡한 가상 환경 관리, 도구 간 호환성 문제 등으로 개발자들을 종종 곤란하게 했습니다. 이러한 문제를 해결하기 위해 등장한 uv는 Rust로 작성된 초고속 Python 패키지 및 프로젝트 관리 도구로, 2024년 초 공개된 이후 빠르게 주목받고 있습니다. 이번 글에서는 uv의 특징, 설치 방법, 사용법, 그리고 왜 uv가 기존 도구를 대체할 수 있는지 자세히 알아보겠습니다.1. uv란 무엇인가?uv는 Astral(고성능 Python linter인 Ruff 개발사)이 만든 Python 패키지 및 프로젝트 관리 도구입니다. Rust로 구현되어 기존 Python 기..

Oracle DB Context MCP Server와 Vuetify로 동적 CRUD 화면 구현하기

Oracle DB Context MCP Server를 사용하여 특정 오라클 데이터베이스 테이블의 스키마 정보를 가져오고, 이를 기반으로 Vuetify를 활용해 CRUD(Create, Read, Update, Delete) 화면을 동적으로 생성하는 예제. 아래에서는 Oracle DB Context MCP Server를 통해 테이블 스키마를 조회하고, Vue.js와 Vuetify를 사용하여 해당 테이블에 대한 CRUD 인터페이스를 생성하는 예제를 단계별로 설명합니다.전제 조건Oracle DB Context MCP Server:설치 및 설정 완료 (.env 파일에 오라클 접속 정보 포함).실행 명령: uv run main.pyMCP 서버가 테이블 스키마 조회 및 데이터 질의를 지원한다고 가정.필요 패키지:Ba..

Python으로 오라클 필드명과 카멜 케이스 변수 매핑 자동화하기

데이터베이스 개발에서 오라클 필드명(스네이크 케이스)과 카멜 케이스 변수명을 매핑하는 작업은 종종 번거롭습니다. 특히, 필드명과 변수명이 일치하지 않거나 순서가 어긋난 경우 이를 비교하고 정리하는 데 시간이 많이 걸립니다. 이번 글에서는 Python을 사용해 오라클 필드명과 카멜 케이스 변수명을 자동으로 비교하고, 매핑되지 않은 변수를 아래로 밀어내어 비교 조견이 가능한 출력 파일을 생성하는 방법을 소개합니다. 이 스크립트는 주석도 유지하며, 아래에 매핑 가능한 변수가 있다면 순서를 조정하는 기능까지 포함합니다.요구사항입력 파일(test.txt)은 한 줄 단위로 |를 기준으로 왼쪽은 오라클 필드명(예: USER_ID), 오른쪽은 카멜 케이스 변수명(예: userId)으로 구성됩니다. 이 파일을 읽어 다음..