반응형
declarative_base ()와 db.Model의 차이점은 무엇입니까?
빠른 시작 자습서 플라스크-SQLAlchemy의 플러그인에 지시 사용자가 상속 테이블 모델을 생성하는 db.Model
클래스를, 예를 들어,
app = Flask(__main__)
db = SQLAlchemy(app)
class Users(db.Model):
__tablename__ = 'users'
...
그러나 SQLAlchemy 자습서 와 bottle-SQLAlchemy README는 모두 테이블 모델 Base
이 declarative_base()
.
Base = declarative_base()
class Users(Base):
__tablename__ = 'users'
...
이 두 가지 접근 방식의 차이점은 무엇입니까?
Flask-SQLAlchemy 소스 코드를 보면 db.Model
클래스가 다음과 같이 초기화됩니다.
self.Model = self.make_declarative_base()
그리고 make_declarative_base()
방법 은 다음과 같습니다 .
def make_declarative_base(self):
"""Creates the declarative base."""
base = declarative_base(cls=Model, name='Model',
metaclass=_BoundDeclarativeMeta)
base.query = _QueryProperty(self)
return base
_BoundDeclarativeMeta
메타 클래스는 SQLAlchemy의의의 서브 클래스 DeclarativeMeta
, 단순히에 대한 기본 값 계산에 대한 지원을 추가 __tablename__
(테이블 이름) 또한 핸들의 바인딩에.
이 base.query
속성을 사용하면 Flask-SQLAlchemy 기반 모델 Model.query
이 SQLAlchemy의 session.query(Model)
.
_QueryProperty
쿼리 클래스도 SQLAlchemy의의 쿼리에서 서브 클래스된다. Flask-SQLAlchemy 하위 클래스는 SQLAlchemy에없는 세 가지 추가 쿼리 메서드 인 get_or_404()
, first_or_404()
및 paginate()
.
나는 이것이 유일한 차이점이라고 믿습니다.
반응형
'programing' 카테고리의 다른 글
MS Office가 설치되지 않은 컴퓨터에서 Microsoft.Office.Interop.Excel을 사용하는 방법은 무엇입니까? (0) | 2020.11.12 |
---|---|
Mavens 종속성 선언 분류 자 속성의 목적은 무엇입니까? (0) | 2020.11.12 |
c11의 멀티 스레딩 지원 (0) | 2020.11.12 |
숙련 된 C 프로그래머를위한 C ++ 튜토리얼 (0) | 2020.11.12 |
Mathematica 노트북의 버전 관리 (0) | 2020.11.12 |