본문 바로가기
반응형

Python123

sqlalchemy - connect database Instance Database is not bound to a Session 해결하기 connect database Instance xxx is not bound to a Session; attribute refresh operation cannot proceed (Background on this error 해결 이 에러는 세션 close() 와 관계가 있다. 코드를 살펴보면, session을 close() 한 이후에 Database에서 가져온 Object 를 활용하는 코드가 있을 것이다. close()를 통해 세션을 닫게 되면, sqlalchemy 에서 관리하는 Object 도 함께 종료가 된다. 그런데 세션의 Object를 계속 사용하면 나타나는 오류이다. 예제로 살펴보면 다음과 같다. db_session = scoped_session(sessionmaker(autocommit=Fa.. 2024. 3. 30.
VSCode - 쓸만한 무료 코파일럿(Copilot) GitHub Copilot은 VScode를 활용해서 코드 생성시점에 편한게 코드를 미리 생성해주기 때문에 상당한 코드 생산성을 가지고 있다. 하지만 월 결제 방식의 유료이기 때문에, 사용하고자 할 때 적지 않은 부담이 생길 수 밖에 없는데, 여기에서는 VSCode에도 제공되고 무료로 사용할 수 있는 Codeium을 소개한다. https://codeium.com/playground Playground | Codeium · Free AI Code Completion & Chat Experience the power of Codeium right in your browser. No account or download needed. See how you could level up your development .. 2024. 3. 26.
VSCode - Python 자동 주석 생성 autoDocstring 코드를 작성하다보면, 코드가 점점 길어지고, 작성한 함수에서 사용하는 파라미터를 일일이 기억해서 사용하는것이 어려워진다. 이때 함수에 작성해 놓은 주석 생성을 도와주는 유용한 앱이 있다. autoDocstring 앱을 설치하고 쌍따옴표 3개를 입력하면 Docstring을 생성할 것인지를 확인하는 창이 나타난다. 여기에서 엔터를 누르면, 현재 기준으로 함수 설명, 입력 값, 출력 값의 기본 포맷을 만들어 주어서 쉽게 설명을 작성할 수 있다. 2024. 3. 25.
Python - Log Decorator 활용 이글을 통해 Python에서 제공하는 중요 기능중 하나인 Decorator를 활용한 Log Decorator관련해서 정리해보고자 한다. Decorator 활용이 Log에 적절한 이유는 Decorator는 Python 설명을 보면 잘 나와 있듯이 함수를 감싸는 기능을 제공하기 때문에 실행전, 실행후에 일관성있게 정의하여 적용하고자 할때 Decorator만 한 것이 없다. 즉 log 입장으로 보면, 함수 실행전과 실행후에 대한 로그를 한번에 구성할 수 있어서 매우 유용하다고 할 수 있겠다. 그리고 개발한 프로그램을 서비스할 때 문제 분석을 위해 로그를 기록해야 하는 경우 log를 위한 코드를 추가를 해야하기 때문에 Decorator를 활용하기가 제격이라고 할 수 있다. 가장 간단하게 만들수 있는 log De.. 2024. 3. 25.
Python - 왜 f-string을 쓰라는 걸까 "Formatting a regular string which could be a f-string" Vusual Studio Code를 작성하다보면 기존 format 습관에 다음과 같은 경고문구를 자주 접하게 된다. Formatting a regular string which could be a f-string 필자도 본 경고가 눈에 띄어서 찾아본 결과 Python 3.6 버전부터 만들어진 새로운 문자열 작성 방법으로 f-string 사용을 권장하는 것이다. 이유는 보다 간결히 작성이 가능하다는 것. 그리고 코드 실행상의 성능 이점도 있다고 한다. 다만 %-formatting 이 가장 속도상 이점이 있지만, 기존 format 을 사용하는 방식보다 속도 개선과 코드 가독성이 좋은 f-string이 가장 효율적일 것으로 판단된다. %-formatting >>> timeit.timeit("""test = ".. 2024. 3. 25.
Python - -u PYTHONUNBUFFERED 사용 Python을 Docker 혹은 백그라운드에서 사용하는 빈도가 높아지면서 -u/PYTHONUNBUFFERED 를 사용하는 일이 많아졌다. -u/PYTHONUNBUFFERED를 사용하면 Python 출력 내용을 버퍼에 넣지 않고 바로 출력하라는 의미가 된다. 프로세스를 백그라운드로 실행시에는 -u를 많이 사용하고, Docker와 같이 시스템 자체에 적용하는 PYTHONUNBUFFERED 도 사용할 수 있다. -u force the stdout and stderr streams to be unbuffered; this option has no effect on stdin; also PYTHONUNBUFFERED=x 예로 nohup 백그라운드 실행을 해보면 -u 옵션이 없는 경우 nohup.out에 출력내용이.. 2024. 3. 25.
Python - Mocking/단위 테스트(Unit Test) 과 Django 활용 Mocking? 개발한 코드는 실제 서비스를 제공하기 전에 정상적으로 동작하는지 테스트가 필요하다. 또 서비스중인 시스템에 추가적인 기능 개발이 들어간다면, 테스트를 진행해야 하는데, 실제 서비스를 진행하고 있을 때 테스트를 한다거나, 환경이 다른 네트워크 데이터 베이스 유저등을 수정해야한다면, 개발한 내용에 대한 테스트가 어려울 수 있다. 이렇게 다양한 환경이나 서비스등의 영향이 발생할 수 있는 상황에서 개발된 기능을 테스트하는데 어려움이 있을 수 있기 때문에 이를 돕기 위해 등장한 개념이 바로 가짜 객체(Mock Object)를 만들어 테스트하는 것을 Mocking라 할 수 있다. Mocking은 다음과 같은 문제에 도움을 준다. Mocking이 필요한 경우 위험요소나 복잡도가 높은 경우 매우 효과적.. 2024. 3. 25.
Python - Class, self 메모리 할당과 관리 Reference counting Python는 개발 편의성을 위해서 메모리 관리를 별도로 하지 않아도 사용이 가능한 프로그램 언어이다. 그리고 최근에 나오는 언어들은 GC(Garbage Collection)라고 하는 메모리 청소 도구 통해 자동으로 메모리에서 불필요한 데이터를 청소해 준다. 하지만 개발자라면 서비스를 위해 개발을 진행하게 되고, 이는 운영체제에서 장시간 사용되는 프로그램을 작성해야 한다는 의미이다. 이때 메모리 관리를 잘못한다면 안정성에 큰 문제가 생기게 된다. 즉 큰 장애를 만날 수 있다는 의미이다. 여기에서는 메모리 관리가 어떻게 되는지 이해하여, Python 코드를 보다 효과적으로 사용할 수 있을 것이라는 생각에, 관련 자료를 찾아서 정리해본다. Python에서 메모리 관리에 사용하는 방식은 Reference co.. 2024. 3. 25.
Python - List 에서 문자열 포함 유무를 확인 Python에서 List 의 문자열 포함 유무를 확인할 수 있는 3가지 방법에 대해서 정리해 보겠다. 가장 쉽게는 for문을 이용하는 것이다. 이는 익히 사용을 많이 하기 때문에 여기에 정리하지 않겠다. 여기에서는 Pandas 및 지능형 리스트 활용하는 방법에 대해서 정리해 본다. 먼저 Pandas에서 제공하는 str.contains를 통해서 리스트에서 검색이 가능하다. 여기에서 특히 강점은 contains 조건을 다중으로 설정 할 수 있다는 것이다. 아래 코드를 보면 a|b라는 문장을 만들어 a또는b가 포함된 리스트를 확인하는 것이 가능하다. Pandas >>> import pandas as pd >>> >>> abc_list ={'name':['aaaa', 'bcd', 'xyz', 'y']} >>> .. 2024. 3. 25.
반응형