2017-02-01 9 views
0

Flask-SQLAlchemy를 사용하여 모델을 정의한 다음 Flask-Migrate를 사용하여 PostgreSQL 데이터베이스에 배포 할 마이그레이션 스크립트를 자동 생성합니다. 나는 아래와 같이 내 응용 프로그램에서 사용하는 데이터베이스에서 여러 SQL 뷰를 정의했습니다.Flask 가져 오기 - Flask-SQLAlchemy 모델로 매핑 된 SQL 뷰를 무시합니다.

그러나 이제 Flask-Migrate는 테이블이라고 생각하여보기에 대한 마이그레이션 파일을 생성합니다. Flags-Migrate/Alembic을 자동 생성하는 동안보기를 무시하도록 올바르게 얻으려면 어떻게해야합니까?

SQL보기 이름 : vw_SampleView 2 열 : idrowcount입니다.

ViewSampleView.query.all() 

내가 http://alembic.zzzcomputing.com/en/latest/cookbook.html에 대한 지침은 다음과 같은 시도 내 env.py 파일로 내 모델에 info = dict(is_view=True) 부분과 다음의 비트를 추가했지만 돈 ': 지금과 같이 질의를 할 수 있다는 것을 의미

class ViewSampleView(db.Model): 
    __tablename__ = 'vw_report_high_level_count' 

    info = dict(is_view=True) 

    id = db.Column(db.String(), primary_key=True) 
    rowcount = db.Column(db.Integer(), nullable=False) 

여기에서 어디로 가야할지 알지 못한다.

def include_object(object, name, type_, reflected, compare_to): 
    """ 
    Exclude views from Alembic's consideration. 
    """ 

    return not object.info.get('is_view', False) 

... 

context.configure(url=url,include_object = include_object) 

답변

1

나는 당신이 __table_args__ 속성보기로 테이블을 표시 할 수 있습니다 (테스트하지 않았습니다하지만) 생각 :

class ViewSampleView(db.Model): 
    __tablename__ = 'vw_report_high_level_count' 
    __table_args__ = {'info': dict(is_view=True)} 

id = db.Column(db.String(), primary_key=True) 
rowcount = db.Column(db.Integer(), nullable=False) 
+0

이 마법처럼 일했다! context.configure가 env.py : run_migrations_offline() 및 run_migrations_online()의 두 위치에 설정되어있는 자체 독자 및 다른 독자에게도 유의하십시오. –