2017-06-27 35 views
0

SQLAlchemyサポートsingle table inheritanceFlask-SQLAlchemy単一テーブル継承

私は同じような構造を持っている:私は、テーブルのプロパティとして 'extend_existing' を追加すると

sqlalchemy.exc.InvalidRequestError: Table 'tbl_user' is already defined for this MetaData instance. Specify 'extend_existing=True' to redefine options and columns on an existing Table object. 

::私は、コードを実行しようとすると、私のようなエラーが出ます

class User(db.Model): 
    __tablename__ = 'tbl_user' 
    type = db.Column(db.String(32)) 
    ... 
    __mapper_args__ = { 
     'polymorphic_identity': 'user', 
     'polymorphic_on': type, 
     'with_polymorphic': '*' 
    } 

class Tourist(User): 
    __mapper_args__ = { 
     'polymorphic_identity': 'tourist' 
    } 
    ... 

class Guide(User): 
    __mapper_args__ = { 
     'polymorphic_identity': 'guide' 
    } 
    ... 

__table_args__ = {'extend_existing': True} 

次に、上記のモデルで何か試してみると次のエラーが表示されます:

sqlalchemy.exc.NoForeignKeysError: Can't find any foreign key relationships between 'tbl_user' and 'tbl_user'. 

これはまっすぐなものでなければならず、特にSQLAlchemyでうまく動作しているという単一の属性で解決できるはずです。 問題を解決する方法はありますか?

答えて

0

私はついに、どのように動作するべきかを見出しました。最初のマッパーargsからwith_polymorficオプションを削除し、子クラスのために__tablename__ = Noneを追加する必要がありますので、正確なコードは次のようになります:

関連する問題