Python 26

Playwright를 활용한 네이버 증권 크롤링 예제

네이버 증권(finance.naver.com)은 주식 시세, 뉴스, 배당 정보 등 다양한 금융 데이터를 제공하는 플랫폼으로, JavaScript로 동적 렌더링되는 페이지가 많아 Playwright와 같은 브라우저 자동화 도구가 크롤링에 적합합니다. Playwright는 동적 웹페이지 처리, 자동 대기, 크로스 브라우저 지원 등으로 네이버 증권의 데이터를 효과적으로 수집할 수 있습니다. 아래는 Playwright를 사용한 네이버 증권 크롤링 예제를 Python으로 작성한 내용입니다.주의: 네이버 증권 크롤링 시 robots.txt와 이용 약관을 확인하고, 과도한 요청으로 서버에 부담을 주지 않도록 적절한 딜레이를 설정하세요. 상업적 사용은 약관 위반이 될 수 있으니 개인 학습 목적으로만 사용하세요.설치Pl..

Playwright: 현대적인 웹 테스트 자동화의 강자

소개Playwright는 Microsoft에서 개발한 오픈소스 웹 테스트 자동화 도구로, Chromium, Firefox, WebKit 등 주요 브라우저 엔진을 지원하며 신뢰성 높은 엔드투엔드(E2E) 테스트를 제공합니다. Puppeteer의 한계를 보완하며, 크로스 브라우저 지원, 자동 대기, 네트워크 모킹, 스크린샷 및 비디오 캡처 등 강력한 기능을 자랑합니다. Node.js뿐만 아니라 Python, Java, C#도 지원해 다양한 개발 환경에 적합합니다. 빠른 실행 속도와 직관적인 API로 초보자부터 전문가까지 모두에게 매력적인 선택지입니다.Playwright의 주요 특징크로스 브라우저 지원: Chrome, Firefox, Safari(WebKit)를 단일 API로 테스트 가능.자동 대기: 요소가 ..

국가별 월별 기온 데이터를 FastAPI로 백엔드 구축 및 Dash로 테이블 출력하기

소개안녕하세요! 오늘은 Python을 활용해 국가별 월별 기온 데이터를 동적으로 처리하고 웹 기반 GUI로 표시하는 방법을 다뤄보겠습니다. 이전에 Flask를 사용한 예제를 FastAPI로 업그레이드하며, Dash를 통해 상호 인터랙티브한 테이블을 구현합니다. FastAPI는 높은 성능과 비동기 처리로 유명하니, 이를 통해 더 효율적인 서버를 경험해 볼 수 있습니다. 1. FastAPI로 백엔드 구축FastAPI를 사용해 더미 데이터를 제공하는 REST API를 만듭니다. 실제로는 기상청 API를 연동할 수 있지만, 여기서는 간단히 시뮬레이션합니다. 파일은 backend.py로 저장하세요.from fastapi import FastAPIfrom fastapi.middleware.cors import C..

오라클 저장 프로시저 내부 오류 캡처 및 Python oracledb로 애플리케이션 레벨 오류 처리 방법

오라클 데이터베이스의 저장 프로시저(Stored Procedure, SP)에서 발생하는 내부 오류를 상세히 파악하고, Python의 oracledb 모듈을 사용해 애플리케이션 레벨에서 이를 효과적으로 캡처하는 방법을 설명합니다. 이 글은 오라클 PL/SQL과 Python 개발자를 위해 실용적인 예제와 함께 오류 처리 기법을 다룹니다.1. 오라클 저장 프로시저에서 내부 오류 캡처오라클 저장 프로시저에서 오류를 캡처하려면 PL/SQL의 **예외 처리 블록(EXCEPTION)**을 사용합니다. 이를 통해 오류 코드(SQLCODE)와 오류 메시지(SQLERRM)를 기록하거나 호출한 애플리케이션으로 전달할 수 있습니다.예제: 오류 로깅 테이블에 기록 CREATE TABLE ERROR_LOG ( ERROR_C..

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..

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으로 오라클 저장 프로시저 OUT 커서 필드 정보 추출하기

오라클 데이터베이스의 저장 프로시저(SP)에서 반환되는 OUT 커서의 필드 정보를 동적으로 추출하는 방법을 Python으로 구현해보겠습니다. 이 방법은 cx_Oracle 모듈을 활용하며, 어떤 저장 프로시저든 필드 이름, 데이터 타입, 정밀도 등의 메타데이터를 쉽게 얻을 수 있도록 설계되었습니다. 특히, 커서에 데이터가 없어도 필드 정보를 추출할 수 있다는 점이 강력한 장점입니다.전제 조건시작하기 전에 다음이 준비되어 있어야 합니다:cx_Oracle 설치: pip install cx_Oracle 명령어로 설치하세요.오라클 데이터베이스 연결: 데이터베이스에 접근할 수 있는 환경(DSN, 사용자 이름, 비밀번호)이 필요합니다.저장 프로시저: OUT 파라미터로 SYS_REFCURSOR를 반환하는 저장 프로시저..