python 281

[Python] redis 사용하기

개요 2023.06.16 - [Redis] 개념 및 설치/실행 2023.06.19 - [Redis] redis-cli로 데이터 읽고 쓰기 위 두 개 글에서 Redis를 설치하고 cli을 이용해 간단히 데이터를 읽고 써봤다. 이 글에서는 Python을 이용해 redis에 접속하고 작업을 해보려고 한다. redis 패키지 설치 Python을 이용해 redis를 사용할 때는 redis 패키지 설치가 필요하다. 필요하다면 더 좋은 성능을 위해 hiredis를 지원하도록 설치해도 된다. pip install redis # 또는 pip install redis[hiredis] redis 모듈 import redis 모듈을 import 하여 사용한다. import redis redis 서버 접속 Redis 생성자에 ..

Python 2023.06.21

[Python] pymysql.err.internalerror (1054 unknown column in 'field list' )

현상 Python으로 MySQL을 연동하여 사용 중이다. 특정 테이블에 데이터를 INSERT 하려고 했더니 아래와 같은 에러 메세지가 발생하면서 실패했다. pymysql.err.internalerror (1054 unknown column in 'field list') 어떤 부분이 문제였는지 적어둔다. 원인 원인은 크게 두 가지로 정리할 수 있다. 컬럼이 테이블에 실제로 없는 경우 테이블에 컬럼이 존재하지만 컬럼의 데이터 타입과 INSERT 할 데이터의 타입이 맞지 않는 경우 이 글의 경우에는 후자로 INT로 정의되어 있던 컬럼에 문자열 데이터를 추가하려고 했던 게 원인이었다. 해결 이 글에서는 데이터베이스 테이블의 컬럼 타입을 INT에서 VARCHAR로 변경하여 해결했다. + 조금 검색해보니 주로 Py..

Python 2023.06.05

[Python] billiard - 멀티프로세싱

개요 이전에 2023.02.19 - [Python] multiprocessing을 통해 Python으로 멀티프로세싱을 수행해 보았는데, 최근 billiard라는 다른 패키지를 사용하여 멀티프로세싱을 수행하게 되었다. 이 글에서는 billiard 패키지 사용법을 정리해 둔다. billiard Python 2.7 multiprocessing 패키지를 Fork한 패키지다. Celery에서 사용하는 패키지로 Celery 팀에 의해 유지보수되고 있다. Github : https://github.com/celery/billiard + Airflow에서 CeleryExecutor를 사용하고 있다면 추가 패키지 설치 없이 멀티프로세싱을 적용할 수 있을 것 같다. 설치 pip를 이용해 설치할 수 있다. pip insta..

Python 2023.05.27

[Python] Pandas - 여러 컬럼 추가

개요 DataFrame에 스칼라 값인 컬럼이 여럿 추가하고 싶을 때는 단순 할당을 반복하거나, import numpy as np import pandas as pd map_code_message = [ {'code':'00','return_message':'Continue'}, {'code':'01','return_message':'Switching Protocol'}, {'code':'02','return_message':'Processing'}, {'code':'03','return_message':'Early Hints'}, ] df = pd.DataFrame(map_code_message) df['server'] = 'web' df['stage_env'] = 'dev' insert 함수를 반복해서..

[Python] Pandas - Dataframe 차집합 구하기

개요 2022.12.25 - [Python] Pandas - 데이터프레임 합성 1 (merge / join)에서 두 데이터프레임에 대한 INNER JOIN과 OUTER JOIN(left, right, full)에 대해서 살펴봤다. 이 글에서는 두 데이터프레임에 대한 LEFT ANTI JOIN, RIGHT ANTI JOIN... 즉, 차집합을 구하는 방법을 정리한다. 예시 데이터 예시로 아래의 데이터프레임 두 개를 사용하여 글을 작성한다. import pandas as pd df1 = pd.DataFrame( [ (1, 345, 'B', True), (2, 100, 'C', False), (3, 300, 'B', False), (4, 151, 'A', False), (5, 212, 'A', True) ],..

[Python] 파일 존재 여부 확인 / 삭제

개요 Python으로 서버에 저장되어 있는 파일을 다루어야 한다. 이 글에서는 서버에 원하는 파일이 있는지 확인하고 삭제하는 방법을 적어둔다. 경로 존재 여부 확인 os.path.exists는 입력받은 경로가 존재하는지 확인하여 bool 데이터를 반환한다. import os if __name__ == '__main__': file_path = 'D:\\PycharmProjects\\airflow_test\\val_test.py' dir_path = 'D:\\PycharmProjects\\airflow_test' print(f'{file_path}: {os.path.exists(file_path)}') print(f'{dir_path}: {os.path.exists(dir_path)}') 파일 여부 확인 ..

Python 2023.04.30

[Python] subprocess.Popen - 시스템 명령어 실행

개요 2023.02.08 - [Python] 시스템 명령어 실행에서 정리하지 않았던 subprocess.Popen 객체에 대해 추가적으로 정리한다. Popen 객체 이전 글에서 살펴봤던 subprocess.run은 내부적으로 Popen 객체를 통해 동작한다. subprocess.run은 명령어 실행 후 종료할 때까지 대기하지만 Popen은 백그라운드 프로세스로 실행하며 세밀하게 시스템 명령을 사용할 수 있다. class subprocess.Popen(args, bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, unive..

Python 2023.04.27

[Python] globals() - 전역 변수 확인 및 설정

개요 2022.10.01 - [Python] 전역/지역 변수와 범위에서 전역변수와 지역변수에 대해 간단히 정리했다. 이 글에서는 특정 모듈 내에서 사용되는 전역 변수를 확인하고 설정하는 방법을 정리한다. globals() Python 내장 함수 중 하나로, 현재 모듈에서 사용하는 전역 변수의 이름과 값으로 이루어진 Dictionary를 반환한다. 예로 들어 아래와 같이 test 함수 내에 지역 변수 a, b가 정의되어 있고, 전역 변수로 c, b가 정의되어 있는 경우 globals 함수의 출력을 살펴본다. def test(): a = 1 b = 2 test() c = 3 b = 4 print ("Global Variables in this module") print (globals()) 실행 결과 Glo..

Python 2023.04.20

[Python] 객체 속성 관련 함수

개요 이번 글에서는 Python에서 객체의 속성을 다룰 때 사용하는 setattr, getattr, hasattr, delattr 함수에 대해 정리한다. 예시 클래스 및 객체는 아래와 같이 사용한다. class Person: name = 'Adam' p = Person() print(p.name) setattr 객체에 속성을 설정한다. 설정하고자 하는 값이 객체에 없다면 속성을 추가하고 값을 할당한다. 반환 값은 없다. setattr(object, attribute_name, value) 예시) class Person: name = 'Adam' p = Person() setattr(p, 'name', 'James') setattr(p, 'age', 20) print(p.name, p.age getattr..

Python 2023.04.16

[Python] Pandas - read_csv 날짜 데이터 읽기

개요 아래와 같은 CSV 파일이 있다고 하자. date, idx, val 1/5/2020 10:00:00, 1, 10 1/5/2020 10:10:00, 1, 12 1/5/2020 10:20:00, 1, 17 1/5/2020 10:00:00, 2, 11 1/5/2020 10:10:00, 2, 14 1/5/2020 10:20:00, 2, 16 날짜 형식의 데이터인 date 컬럼이 존재하는데, 이 파일을 read_csv로 읽은 후 데이터형을 확인하면 다음과 같다. 코드) import numpy as np import pandas as pd f_name = 'sample.csv' df = pd.read_csv(f_name) print(df.info()) datetime 형이 아니라 object 형 데이터로 추론..