SQLAlchemy
사용자 정의 Python 클래스를 데이터베이스 테이블과 연결하는 방법 및 해당 클래스 (개체)의 인스턴스를 해당 테이블의 행과 연결하는 방법을 제공
init 메서드
클래스의 객체가 만들어질 때 자동으로 호출되어서 그 객체가 갖게 될 여러 가지 성질을 정해준다
repr 메서드
파이썬의 기본문인 print 문을 가능하게 해주는 것
repr : 'Representation’ 표현하다
def __repr__(self):
return self.title
참고: str와 repr의 차이점
정적메소드 classmethod
cls가 있는데 이것은 '클래스'를 가리킨다. 이것으로 클래스의 어떤 속성에도 접근할 수 있다.
class ItemDao(ItemDto):
@classmethod
def find_all(cls):
return cls.query.all()
@classmethod
def find_by_id(cls, id):
return cls.query.filter_by(id == id).first()
위 코드를 보고 궁금했던 점 : classmethod는 동적변수로 접근할 수 있게하고 id 값이 바뀌어도 어떤 클래스의 속성에 접근할 수 있게 한다는 것이 올바른 생각인지 궁금했다.
해결 : cls는 전역변수로 외부에서 static으로 사용하게 하는 인자이다. 싱글톤패턴을 위해(스프링에서는 이것을 @Autowired로 처리함) 즉, static처럼 사용하기 위해 작업