Coding345 Python dataclass property/setter 파이썬 3.7부터 보다 간편하게 클래스를 생성할 수 있는 dataclass가 추가됐다. dataclass를 사용하여 Getter/Setter를 추가할 때 발생한 문제점과 해결 방법에 대해 기술한다. 파이썬에서 Getter/Setter를 사용하려면 @proprety와 @요소.setter라는 특수한 데코레이터를 사용해야한다. 먼저 일반적인 클래스의 경우 어떻게 사용하는지부터 살펴본다. class User: def __init__(self, id: str, pw: str): self.id = id self._pw = pw @property def pw(self): return self._pw @pw.setter def pw(self, value: str): self._pw = value if __name__ .. 2019. 9. 18. Python Requests Retry 일반적으로 파이썬에서 리퀘스트를 보낼 때 requests 라이브러리를 사용한다. 사용법이 간단하고 직관적이므로 처음 사용하는 사용자들이라도 손쉽게 사용할 수 있기 때문이다. (https://2.python-requests.org/en/master/) 만약 리퀘스트를 보낸 후 돌려받은 Response를 통해 어떠한 로직을 거쳐야하는 상황이 있다고 가정해보자. 만약 단 한번의 리퀘스트를 전송했는데 대상 서버의 상태가 죽어있을 경우 정상적인 Repsonse를 받을 수 없고 그 이후에 거치는 로직또한 정상적으로 탈 수 없다. 따라서 대상 서버의 응답이 정상이 아니라면, 일정한 횟수동안 재시도(Retry)를 하도록 구현해야한다. 이러한 재시도 로직이 필요할 경우 개발자가 직접 특정한 로직을 구현할 필요없이 라이브.. 2019. 9. 5. PostgreSQL Partitioning 적용하는 방법 PostgreSQL Version 10미만 1. 테이블 생성 먼저 아래와 같이 부모 테이블을 생성한다. CREATE TABLE users( id bigint, nickname varchar(20), gender char(1), )다음으로 부모 테이블을 상속받아서 자식 테이블을 생성한다. 본 예제에서는 gender를 따라 남성/여성을 구분할 것이므로 users_male과 users_female 두개의 테이블을 만들었다. CREATE TABLE users_male( CHECK (gender = 'M') ) INHERITS(users) CREATE TABLE users_female( CHECK (gender = 'F') ) INHERITS(users)여기서 CHECK 문법을 사용하.. 2019. 8. 7. Python Method Chaining SQLAlchemy, MongoEngine 또는 Django ORM 등의 쿼리를 보면 Chaining을 통해 쿼리를 쉽게 작성할 수 있다는걸 알 수 있다. 예를 들어 아래와 같은 형태이다. User.objects.filter(user_id=1).order_by('-user_id')위 쿼리는 user_id=1의 결과값을 역순으로 정렬하여 return해준다. 쿼리에서 알 수 있듯이 filter().order_by() 형태로 함수들을 Chaining해줬다. 만약 Chaining을 지원하지 않았다면 filter()를 한번해주고 그 결과값을 다시 order_by()를 해주는 형태로 나눠서 작성해야 했을 것이다. 이는 상당히 많은 경우에서 유용한데, 파이썬의 경우 정말 간단한 방법을 통해 Method.. 2019. 7. 17. MongoDB aggregate lookup으로 컬렉션 조인하는 방법 MongoDB는 NoSQL이므로 관계형 데이터베이스와 달리 조인이라는 기능이 없다. 하지만 쿼리를 질의하다보면 가끔씩 조인이 필요한 경우가 있다. 그럴 때 aggregate()라는 집계함수를 사용하면 다른 컬렉션을 조인시킬 수 있다. aggregate는 조인만을 위한 함수는 아니고 보다 복잡한 질의문을 구성할 때 사용하는것인데, 여기서 제공하는 기능 중 $lookup을 사용하면 타 컬렉션과 조인을 할 수 있다고 생각하면 될 것 같다. 먼저 예시를 위해 아래와 같은 도큐먼트가 존재한다고 가정한다. posts> db.posts.find() { "_id" : ObjectId("5d22de26fc60aab610f73e04"), "post_id" : 1, "user_id" : 1, "body" : "first",.. 2019. 7. 8. Mongo Atlas 데이터 마이그레이션 하는 방법 현재 회사에서 작업을 하며 관리형 데이터베이스로 Mongo Atlas를 사용하고 있다. 보통 테스트/라이브 용 클러스터를 따로 두고 작업을 하는데, 테스트 용 데이터베이스에 실제 라이브처럼 수많은 데이터가 들어있진 않다. 하지만 데이터베이스 쿼리를 날릴 때 부하가 얼마나 걸리는지, 성능을 실제 테스트해봐야 하는 경우가 존재하는데 그럴 경우 Atlas에서 자체적으로 제공하는 Migration기능을 이용하면 손쉽게 복제 클러스터를 생성할 수 있다. 먼저 Mongo Atlas 콘솔로 들어간다음 데이터를 복제시킬 클러스터를 하나 생성한다. 그다음 클러스터쪽에 점 3개 버튼을 클릭하면 위처럼 메뉴가 나오는데 Migrate Data to this Cluster를 선택한다. I'm ready to migrate 버튼.. 2019. 6. 26. 이전 1 ··· 12 13 14 15 16 17 18 ··· 58 다음