Python을 배워보자 96

오라클 프로시저 파라미터 정보 조회하는 파이썬 코드 (oracledb 사용)

오라클 데이터베이스에서 프로시저(Procedure)의 파라미터 정보를 조회하는 것은 DBA나 개발자에게 유용한 작업입니다. 특정 프로시저의 파라미터 이름, 데이터 타입, 입력/출력 여부를 확인해야 할 때가 많죠. 이번 글에서는 Python의 oracledb 라이브러리를 사용해 오라클 프로시저의 파라미터 정보를 조회하는 코드를 작성해 보겠습니다. 이 코드는 프로시저 이름을 입력받아 해당 파라미터 정보를 반환하는 간단한 스크립트입니다.준비물Python 환경: Python 3.6 이상oracledb 라이브러리: 설치가 필요합니다. 아래 명령어로 설치하세요.bash pip install oracledb오라클 데이터베이스 접속 정보: 사용자 이름, 비밀번호, DSN(데이터 소스 이름)이 필요합니다.오라클 DBA ..

Python과 oracledb로 SQL 파일의 Oracle 저장 프로시저 실행하기

오라클 데이터베이스에서 저장 프로시저를 관리하다 보면, 특정 디렉토리 내의 SQL 파일을 자동으로 실행해야 할 때가 있습니다. 이 블로그에서는 oracledb 라이브러리와 Python을 사용해, 특정 경로와 그 하위 디렉토리를 순회하며 CREATE OR REPLACE PROCEDURE로 시작하는 SQL 파일을 실행하는 방법을 소개합니다. 이 코드는 기존의 oracle_procedure_util.py 모듈을 기반으로 작성되었으며, 디렉토리 순회와 SQL 실행 로직을 추가했습니다.1. 코드 개요이 Python 스크립트는 다음 기능을 수행합니다:디렉토리 순회: 지정된 경로와 하위 디렉토리를 탐색해 .sql 확장자를 가진 파일을 찾습니다.SQL 파일 필터링: 파일 내용이 CREATE OR REPLACE PROC..

Python에서 Oracle 저장 프로시저의 DBMS_OUTPUT.PUT_LINE 메시지 확인하기

오라클 데이터베이스의 저장 프로시저에서 DBMS_OUTPUT.PUT_LINE으로 출력된 디버깅 메시지를 Python에서 확인하는 방법을 소개합니다. 이 블로그에서는 oracle_procedure_util.py 모듈을 기반으로, DBMS_OUTPUT 메시지를 읽어오는 방법을 단계별로 설명하고, 실제 구현 코드를 제공합니다.1. oracle_procedure_util.py 모듈 개요oracle_procedure_util.py는 오라클 저장 프로시저를 호출하고, 결과를 처리하거나 테스트용 SQL 쿼리를 동적으로 생성하는 유틸리티 모듈입니다. 주요 기능은 다음과 같습니다:저장 프로시저 호출: 오라클 저장 프로시저를 호출해 결과 데이터를 처리합니다.랜덤 데이터 생성: 결과 데이터가 없을 경우, 커서 메타데이터를 ..

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 처리: 여..

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

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

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)으로 구성됩니다. 이 파일을 읽어 다음..