본문 바로가기

python

(58)
[Python] 파이썬으로 mysql 데이터베이스 접근하기 (pymysql 사용법) 파이썬 스크립트를 통해 mysql 데이터베이스를 다뤄야 할때가 있습니다. 파이썬은 mysql과의 연동을 위해 pymysql이라는 모듈을 제공하는데요. 해당 모듈을 사용하면 파이썬을 사용하여 쉽게 mysql db를 다룰 수 있습니다. 그럼 지금부터 pymysql을 통한 mysql 데이터베이스 다루는 예제를 살펴보도록 하겠습니다. 사전준비 접속에 필요한 mysql database를 확보해야 합니다. python3에서 진행합니다. pymysql을 설치합니다. pymysql 인스톨 $ pip install pymysql 명령어를 통해 pymysql을 설치합니다. 이후 파이썬에서는 아래와 같이 해당 모듈을 임포트하여 사용합니다. import pymysql 데이터베이스 생성 import pymysql conn = ..
[Python] 파이썬에서 __init__.py 의 의미 파이썬 코드의 폴더 구조를 보다보면 __init__.py 라는 파일이 굉장히 많이 보입니다. 특히 패키지 구조에서 많이 보이는데요. 패키지에서 __init__.py는 특별한 기능을 합니다. __init__.py 기능 파이썬에서 패키지를 읽어들일 때 가장 먼저 __init__.py 파일을 읽어 옵니다. 그래서 패키지와 관련된 초기화 처리를 이 부분에서 수행합니다. 그 중 __all__ 이라는 기능을 알아두실 필요가 있는데요. 특정 디렉터리의 모듈을 *로 한꺼번에 import 할때에는 __init__.py에 all이라는 리스트를 설정해주어야 합니다. # __init__.py __all__= ["first_module", "second_module"] print("test_package 폴더의 모듈을 모두 읽..
[Python] 파이썬에서 if __name__ == "__main__" 의 의미 if __name__ == "__main__" 파이썬 코드를 보다보면 위와 같은 조건문이 자주 등장하시는 것을 볼 수 있습니다. 위 조건문은 현재 코드가 프로그램의 진입점entry point 또는 메인 main 인지를 체크하는 부분입니다. __name__ 변수 파이썬에서 제공하는 __name__ 변수는 모듈의 이름을 출력해줍니다. 하지만 현재 코드가 프로그램의 진입점 entry point 인 경우에는 __main__이라는 값을 가지게 됩니다. 한번 코드를 통해 확인해봅시다. # main.py import external_module print("It's main.py") print(__name__) #external_module.py print("It's external_module.py") print(..
[Python] 파이썬 라이브러리와 프레임워크의 차이 파이썬 모듈을 보다보면 라이브러리(library) 그리고 프레임워크(Framework)라는 단어가 자주 등장합니다. 큰 구분없이 사용하지만, 제어 역전(Inversion of Control)에 따라서 둘을 구분할 수 있습니다. - 라이브러리 : 정상적인 제어가 이뤄지는 모듈 - 프레임워크 : 제어 역전이 발생하는 모듈 먼저 여기서 제어 역전을 설명할 필요가 있는데, 제어역전이란 '개발자가 만든 함수를 모듈이 호출하는 경우'를 뜻합니다. 아래 코드를 보시면 이해하실 수 있는데요. from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hi" 위 플라스크 코드는 개발자가 작성하였지만, 저 함수를 실행하는 것은 모듈입..
[Python] 파이썬 데코레이터 (decorator) 파이썬에는 데코레이터라는 기능이 있습니다. 사전적으로는 '꾸며주는 사람'이라는 뜻이 있는데요. 이 기능은 함수의 기능을 확장하고 싶은 경우에 사용합니다. 구현상으로는 함수를 인자로 받아 함수의 기능을 추가한 후 다시 리턴해주는 형식으로 구현합니다. 이해하기 어려우실 테니 예제를 통해 살펴보도록 하겠습니다. 만약 특정 함수의 실행시간을 측정하고 싶다면 아래와 같이 코드를 작성할 수 있습니다. import time def func_time_interval(funct): def time_check(*args, **kwargs): start_time = time.perf_counter() result = funct(*args, **kwargs) finished_time = time.perf_counter() p..