Python 266

[boto3] 예외 처리

개요 Python으로 boto3을 사용할 때 발생하는 예외를 처리해 로그 또는 메시지를 남기거나 예외를 무시해야 하는 경우가 있다. 이 글에서는 boto3을 사용할 때 발생하는 예외를 처리하는 방법을 정리해둔다. 예외 종류 boto3를 사용할 때는 botocore 또는 AWS Service에서 예외가 발생할 수 있다. Botocore Exception Boto3가 의존하는 botocore 패키지 내에 정적으로 정의되는 예외이다. 클라이언트 측의 동작, 구성, 유효성 검사와 관련된 예외가 정의되어 있다. 정의된 예외는 https://github.com/boto/botocore/blob/develop/botocore/exceptions.py 에서 확인할 수 있다. AWS Service Exception bo..

Python 2022.11.10

[Python] PyMySQL/Pandas를 이용해 SELECT 하기

개요 2022.11.05 - [Python] PyMySQL - MySQL SELECT 하기에서 PyMySQL 라이브러리를 사용해 Python으로 MySQL을 다뤄보았다. PyMySQL만을 사용하면 매번 커서를 생성하는 등의 작업이 필요한데 Pandas를 사용하면 조금 더 편하게 MySQL을 다룰 수 있다. 이 글에서는 PyMySQL와 Pandas를 사용해 SELECT문을 실행하는 방법을 정리한다. MySQL 연결 PyMySQL을 이용하여 MySQL와 연결한다. import pymysql conn = pymysql.connect(host='DB_SERVER_IP', port='PORT' user='USERNAME', password='PASSWORD', db='DATABASE_NAME', charset='..

Python 2022.11.06

[Python] PyMySQL - MySQL SELECT 하기

PyMySQL Python을 이용해 MySQL을 다룰 때 사용할 수 있는 라이브러리 중 하나로, 순수하게 python으로 구현되어 있다. 💡 다른 라이브러리 - mysql-connector-python : Oracle에서 공식적으로 지원하는 라이브러리. mysql 8.0 이상의 버전에서 사용할 수 있다. - mysqlclient : PyMySQL을 개발한 측에서 개발한 라이브러리. C로 구현되어 있다. 이 글에서는 MySQL을 다룰 때 사용할 수 있는 라이브러리 중 대중적으로 사용되는 PyMySQL을 이용해 데이터를 SELECT 하는 방법을 정리한다. 설치 PyMySQL 라이브러리는 아래 명령어로 설치할 수 있다. pip install PyMySQL import 설치한 PyMySQL 라이브러리는 아래와 ..

Python 2022.11.05

[Python] 한 문서 내 여러 JSON 데이터 읽기

개요 2021.11.01 - [Python] JSON 데이터 다루기에서 정리했던 대로 다음과 같은 코드로 JSON 형식 데이터를 Python으로 읽고 다루려고 한다. import json file_path = 'test.json' with open(file_path, 'r') as f: json_obj = json.load(f) 근데 실행했더니 에러가 발생하면서 실패했다. json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 221) 읽을 JSON 파일을 확인해보니 각각의 줄은 유효한 JSON 데이터였으나, 전체적으로는 목록이나 객체 정의가 없어 유효한 JSON 형식의 데이터가 아니었다. {"votes": {"funny": 2, "useful"..

Python 2022.11.04

[boto3] S3 event 알림 설정 확인

개요 2022.10.11 - [aws cli] S3 event 알림 설정 확인에서 AWS CLI로 S3 이벤트 알림 설정 정보를 확인했다. 이번 글에서는 같은 일을 Python AWS SDK인 boto3을 이용해서 확인해보려고 한다. 필요한 권한은 모두 부여되어 있다고 가정한다. 자격 증명 확인 S3를 다루기 위한 자격 증명은 아래 함수로 얻을 수 있다. S3는 리전 구분을 하지 않으므로 region_name은 사용하지 않았다. def get_session(profile_name=None): session = boto3.Session(profile_name=profile_name) return session def get_client(aws_access_key_id=None, aws_secret_acce..

Python 2022.11.01

[Python] functools.partial - 함수 재활용

개요 2022.07.04 - [functools] reduce 함수에 이어 functools 모듈의 partial 함수에 대해 알아본다. partial partial 함수는 함수 이름과 그 인자 값을 전달받아 하나 이상의 인자가 채워진 함수를 생성하기 위해 사용한다. functools.partial(func, *args, **kwargs) 예시 아래와 같이 두 수의 곰셉을 계산하는 multiply 함수가 있다고 하자. def multiply(x, y): return x * y 만약 이 함수의 x가 5이고, 7이고 9인 함수를 정의해야 한다면 partial 함수를 이용해 아래와 같이 선언하여 사용할 수 있다. import functools def multiply(x, y): return x * y five..

Python 2022.10.31

[Python] 디렉터리 내 파일/디렉터리 리스트 확인 - 3

os.walk 매개변수로 전달한 디렉터리를 하향식 또는 상향식으로 탐색하며 존재하는 파일명의 리스트를 반환한다. 2022.10.16 - [Python] 디렉터리 내 파일/디렉터리 리스트 확인 - 1 [Python] 디렉터리 내 파일/디렉터리 리스트 확인 - 2 위 두 글에 이어서 os.walk 함수로 디렉터리 내 파일/디렉터리 리스트를 확인하는 방법을 정리한다. 사용법 os.walk 함수는 매개변수로 전달받은 경로부터 (dirpath, dirnames, filenames)로 이루어진 튜플의 리스트를 반환한다. dirnames와 filenames는 리스트형 데이터로 반복문으로 os.path.join 함수를 사용하면 보다 깔끔한 결과를 얻을 수 있다. 파일/디렉터리 import os base_path = '..

Python 2022.10.30

[Python] yaml 데이터 다루기

YAML 사람이 쉽게 읽을 수 있는 데이터 직렬화 양식으로, "YAML은 마크업 언어가 아니다 (YAML Ain't Markup Language)”라는 재귀적인 이름에서 유래되었다. 파일 확장자는 .yaml, .yml을 사용한다. 2021.11.01 - [Python] JSON 데이터 다루기, 2022.10.21 - [Python] CSV 데이터 다루기에 이어서 이번 글에서는 yaml 데이터를 다루는 방법을 정리해둔다. 이 글에서는 YAML 1.1(2005 ~ )을 지원하는 PyYAML을 사용할 것이다. YAML 1.2(2009 ~ )은 ruamel.yaml을 사용해야 한다. PyYAML 설치 및 임포트 기본 내장 라이브러리가 아니므로 아래 명령어로 설치한 뒤, import 하여 사용한다. pip ins..

Python 2022.10.28

[boto3] AWS SQS 정보 확인

개요 2022.09.29 - [aws cli] SQS 관련 정보 확인에서 AWS CLI로 SQS의 정보를 확인했다. 이번 글에서는 같은 일을 Python AWS SDK인 boto3을 이용해서 확인해보려고 한다. 필요한 권한은 모두 부여되어 있다고 가정한다. 자격 증명 확인 SQS를 다루기 위한 자격 증명은 아래 함수로 얻을 수 있다. profile, access key, EC2에 부여된 role 등을 사용할 수 있다. def get_session(profile_name=None): session = boto3.Session(profile_name=profile_name) return session def get_client(aws_access_key_id=None, aws_secret_access_key..

Python 2022.10.27

[Python] 날짜/시간 연산 (어제 날짜 구하기)

개요Python을 이용해 오늘의 매시 정각, 정오 또는 어제 날짜를 계산하고 싶다. 케이스대로 예시를 정리해둔다.   현재 시각 구하기datetime 모듈을 사용하면 현재 시각을 '2022-10-11 21:07:36.221681'와 같은 형식으로 구할 수 있다.import datetime# Local Timezoneprint(datetime.datetime.now())print(datetime.datetime.today())# UTCprint(datetime.datetime.utcnow()) 기본적으론 컴퓨터에 설정된 시간대를 기준으로 확인하지만, utcnow 함수를 사용하면 UTC 기준으로 확인한다. time 모듈을 사용할 수도 있다.import time# Local Timezoneprint(time...

Python 2022.10.24