프로그래밍/Python
-
Alembic 사용법 (python data migrations)프로그래밍/Python 2024. 5. 5. 11:46
Alembic 이란?Python에서 사용하는 Database Migration Tool주로 Alembic + Sqlarchemy로 사용하여 통합 관리 하게 됩니다.Alembic을 사용하는 이유?보통 개발 할 때 여러 대의 DB를 생성하여 사용합니다.아래 Flow와 같이 Dev와 Prod DB를 일치 시켜야 운영이 가능 할 때 사람이 일일히 수동으로 하는 것이 아니라 Alembic으로 통합하여 다른 사람이라도 똑같은 컨디션의 환경을 제공해주기 위한 툴입니다.spring 진영의 flyway와 비슷 합니다. 차이점이라면 flyway는 변경 정보를 각 테이블에 모두 기록하는 반면, alembic은 마지막에 마이그레이션 된 버전의 해시값만을 기록합니다.alembic DB migrations을 버전의 해시값으로 버..
-
python pyenv로 가상화 환경 만들기프로그래밍/Python 2024. 5. 4. 19:20
pyenv란?먼저 프로젝트 진행 시에 다양한 프로젝트를 개발 하는 경우가 많다. 그럴 때 마다 상황에 맞는 python 버전을 가지고 대응해야 하는데, 하나의 python 버전만 가지고는 많은 프로젝트를 한 컴퓨터에서 진행하기란 어간 쉬운 일이 아니다. 한 프로젝트는 python 3.11 한 프로젝트는 python 3.5버전을 가졌다면, 내장 함수 부터 호환 되는 라이브러리 들이 다 엉켜 있다. 이럴 때 가상화 환경을 사용하여 여러 환경에 대응되는 패키지를 관리하게 되는데 이때 pyenv를 사용하면 좋다pyenv는 system > global > local > pyenv shell로 layer를 가진다. Layer기반으로 범위가 낮아짐으로 system python은 최상위 버전을 아래로 갈 수 록 낮아지..
-
python 패키지 관리를 위한 poetry 패키지 매니저 활용법프로그래밍/Python 2024. 5. 4. 13:10
Poetry란?python에서 사용하는 패키지 매니저임python 개발시 협업을 진행하기 위해 패키지를 맞춰야 하는데 유용함python 패키지 setup하는 용도로도 사용함python lint, flake8에서도 유용한 작용을 함자바와 maven gradle과 같은 기능이라고 보면 됨또한 개발과 배포용에서 굳이 배포 하지 않아도 되는 flake8 같은 패키지는 개발과 배포용으로 구분하여 패키지 관리도 진행 가능하다.Poetry 버전 확인—version으로 버전 확인 후 없으면 설치 하면 된다.# 버전 확인 poetry --version # Poetry (version 1.8.2) # 설치 pip install poetry Poetry로 python 패키지 생성poetry init # or poetry n..
-
python property 사용하기프로그래밍/Python 2022. 3. 12. 16:35
안녕하세요 까치입니다. 이번에는 python 내장함수 property 데코레이터에 대해 알아보겠습니다. property 예시로 클래스를 이용할때는 __init__함수를 사용하여 생성자를 만들어줍니다. 이부분은 다 아실거라 생각고 넘어 가겠습니다. 안에 필드명을 name, age, grade로 설정 하였습니다. class Student: def __init__(self, name, age, grade): self.name = name self.age = age self.grade = grade self의 name, age , grade를 담아 객체를 만들었을 때 내용이 담기도록 설정 하였습니다. 여기서 그럼 생성한 객체에서 값을 재설정하고, 다시 출력하는 기능을 구현을 해야 하는데 이 부분은 다른 언어에서..
-
[python] return에서 or/and 연산자 사용법프로그래밍/Python 2021. 6. 17. 09:31
python에서는 return 도 or / and 연산자를 사용할 수 있는 것을 처음 알았다. 이번에 django를 배우는 도중에 github에올라온 소스 코드 인데 db를 만드는 과정에서 class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) name = models.CharField(max_length=200, blank=True) def __str__(self): return self.name or str(self.user) 이런 소스코드가 있어 return 값에대한 내용을 찾아보았는데 아래와 같았다. 이부분도 잘 활용하면 소스코드도 줄이고 좋을 것같다. and 와 or 의 return value..