본문 바로가기

전체 글277

[Python] 효율적인 대용량 데이터 삽입 방법 예시 코드# DB 연결 객체와 관련 정보는 생략# 주어진 리스트(result_list)를 일정 크기(chunk_size)의 리스트들로 나누는 함수def chunks(lst, chunk_size): for i in range(0, len(lst), chunk_size): yield lst[i:i + chunk_size]# result_list가 1000개의 요소를 가지고 있다고 가정# 각 chunk는 100개의 요소를 가지므로 첫 번째 for문은 10번 반복하게 됩니다for chunk in chunks(result_list, 100): record = [] # 매 chunk마다 새롭게 record 리스트를 초기화 for data in chunk: 변수1 = da.. 2024. 5. 30.
[Python] SSH 터널링, pymysql 설명과 사용 방법, %s(플레이스홀더) 사용법 sshtunnel, pymysql SSH 터널링이란?사용 이유는 보안과 네트워크 접근성을 향상시키기 위함이며, 주로 데이터베이스 서버가 내부 네트워크에 위치하여 외부에서 직접 접근할 수 없는 경우에 사용됩니다. SSH 터널링은 외부에서 안전하게 내부 서버에 접근할 수 있도록 허용해주는 메커니즘입니다. 외부 클라이언트는 SSH 프로토콜을 통해 중간 서버(터널 서버)에 접속한 후, 해당 서버를 통해 내부 서버에 접근할 수 있습니다. 이를 통해 데이터베이스와 같은 중요한 서비스에 대한 보안을 강화하고, 외부에서 안전하게 접근할 수 있도록 합니다. pymysql이란?Python 코드에서 MySQL 데이터베이스에 쉽게 접근하고 데이터를 처리할 수 있습니다. 이 라이브러리는 MySQL 서버와의 통신을 가능하게 하므로, 데이터베이스와의 상호작용이 필.. 2024. 5. 29.
[Python] 안전한 URL 문자열로 인코딩, 디코딩하는 방법 quote(), unquote() urllib.parse 이란? 위 모듈은 URL을 안전하게 처리하고 다룰 수 있는 기능을 제공합니다. 그 중에서도 quote 함수는 URL의 일부분으로 사용할 수 없는 문자를 안전한 형태로 인코딩하여 URL을 생성할 때 사용됩니다. 이 함수는 일반적으로 URL에서 사용할 수 없는 문자들을 %xx 형태로 인코딩하여 URL에 사용할 수 있게 해줍니다. 예를 들어, 공백이나 특수 문자 등이 URL에 포함될 때 이러한 문자들을 안전하게 인코딩하여 URL을 만들 때 사용됩니다. 디코딩하여 URL을 생성할 때는 unquote() 함수를 사용합니다.인코딩함수 quote() 예시from urllib.parse import quote# 안전한 문자열로 URL 인코딩url = "https://www.example.com/.. 2024. 5. 29.
[Python] Selenium 작업 시 보안 문자 해결하는 방법(모듈) imagecaptcha() anticaptchaofficial.imagecaptcha란?위 모듈은 보안문자(CAPTCHA) 이미지를 해독하는 기능을 제공합니다. 이 모듈을 사용하면 웹사이트에서 자동입력 방지 시스템으로 사용되는 이미지 기반 보안문자를 해독할 수 있습니다. 이 모듈을 통해 보안문자 이미지를 분석하고, 해독 결과를 반환하여 자동화된 프로세스에서 보안문자 입력 단계를 자동화할 수 있습니다.사용 방법)from selenium.webdriver.common.by import Byfrom anticaptchaofficial.imagecaptcha import imagecaptcha# 자동입력 방지문자 스크린샷element = driver.find_element(By.CSS_SELECTOR, '해당 요소')element.scr.. 2024. 5. 29.
[Python] Google Sheets에서 데이터 읽어 오는 방법 gspread 사용하기 위해 gspread 모듈 다운pip install gspread  사용 예시)import gspread# Google Sheets에서 데이터를 읽어오는 함수def read_google_sheets(service_account_file, spreadsheet_url, sheet_name, cell_range): try: # Google Sheets 서비스 인증 및 문서 가져오기 gc = gspread.service_account(filename=service_account_file) sh = gc.open_by_url(spreadsheet_url) ws = sh.worksheet(sheet_name) # 셀 범위에서.. 2024. 5. 29.
[Python] 외부 프로세스 실행하는 법 subprocess subprocess란?파이썬에서 외부 프로세스를 실행하고 상호작용하는 데 사용 이 모듈을 사용하면 새로운 프로세스를 생성하고 커뮤니케이션을 통해 입력을 전달하고 결과를 받아올 수 있습니다.주요 함수로는 subprocess.Popen()과 subprocess.run()이 있습니다.subprocess.Popen(): 이 함수는 외부 명령어를 실행하고 상호작용할 수 있는 프로세스 객체를 반환합니다. 이를 통해 표준 입력(stdin), 표준 출력(stdout), 표준 에러(stderr)를 제어할 수 있습니다. 이를 통해 여러 파이프라인으로 데이터를 전달하고 프로세스 간 통신을 할 수 있습니다.subprocess.run(): 이 함수는 명령어를 실행하고 결과를 반환합니다. 주로 간단한 명령어를 실행하고 그 결과를.. 2024. 5. 28.
[Python] 2. Multiprocessing(멀티 프로세싱) 결과를 정렬하여 받는 방법, 공유할 데이터가 있을 때의 방법 multiprocessing.Manager() 결과를 정렬하여 받는 방법 프로세스들이 병렬로 실행되기 때문에,결과값의 순서가 보장되지 않으므로, 정렬을 통해 순서를 맞추어 출력하면 된다.실제 작업은 병렬로 작업하여 순서가 맞지 않지만, 결과만 순서대로 받고 작업이 전부 끝날 때 한번에 받는다. 예시)import multiprocessingdef update_data(index, url): # 데이터 처리 로직 return f"{index}\t{url}"if __name__ == "__main__": # 데이터 준비 index_list = [1, 2, 3, 4] url_list = ["url1", "url2", "url3", "url4"] # 멀티프로세싱 Pool 객체 생성 with multiprocessing.P.. 2024. 5. 28.
[Python] 1. Multiprocessing(멀티 프로세싱) 설명과 사용법 Multiprocessing(멀티 프로세싱)멀티 프로세싱을 활용하면 여러 작업을 별도의 프로세스를 생성 후 병렬처리해서 더 빠르게 결과를 얻을 수 있다. 멀티 프로세싱을 잘 활용하면 멀티코어의 CPU 장점을 잘 살릴 수 있지만,  병렬 프로그래밍의 이해 없이 코드를 작성하면 싱글 프로세스보다 더 느린 경우나,  예상하지 못한 결과가 나올 수 있으니 프로세스, 쓰레드에 대한 이해가 필요하다.   * 멀티 프로세싱은 메모리 사용률이 높아지는 단점이 있다.방법 1: Process 객체를 이용한 방법import osfrom multiprocessing import Process# 실행할 함수def f(name): print(f"Hello, {name}")if __name__ == "__main__": .. 2024. 5. 28.
[Python] any() 함수와 시퀀스(Sequence)와 이터러블(Iterable)에 대한 설명, 리스트 컴프리헨션, 제너레이터 표현식 설명 any() 함수 설명과 예제any() 함수는 파이썬 내장 함수 중 하나로, 인자로 반복 가능한(iterable) 객체를 받아 그 안에 있는 요소 중 하나라도 참이면 True를 반환하고, 모든 요소가 거짓일 경우에만 False를 반환합니다. 따라서 any() 함수는 주어진 조건을 만족하는 요소가 있는지 여부를 판단할 때 사용됩니다. 예제)user_ids = ['user1', 'user2', 'user3']partner_lst = [['user4', 'user5'], ['user6', 'user1'], ['user7', 'user8']]# 파트너 리스트에 사용자 아이디가 있는지 확인found = any(user_id in partner for partner in partner_lst for user_id i.. 2024. 5. 28.
[Python] 파일, 폴더 관련된 모듈과 함수들 os, makedirs(), os.path.join(), shutil, exists(), remove(), listdir() 폴더 생성하는 방법폴더를 생성하는 방법은 os.makedirs() 함수를 사용합니다. 이 함수는 하위 디렉토리를 모두 생성하며, exist_ok=True 옵션을 주면 이미 폴더가 존재해도 오류를 내지 않고 넘어갑니다.import os# 현재 경로에서 a폴더, 그 하위에 b폴더, 그 하위에 log폴더 생성os.makedirs('./a/b/log', exist_ok=True)경로 합치는 함수파일 경로를 합치는 함수로는 os.path.join() 함수를 사용합니다. 이 함수는 운영체제에 맞게 경로를 연결해줍니다.import osoutput_folder_path = './output'file_name = 'result.txt'# 경로와 파일명을 합쳐서 전체 경로 생성full_path = os.path.join(.. 2024. 5. 28.