2013-03-08 27 views
1

使用flask-sqlalchemy,我想創建一些類來繼承聲明類並添加__bind_key__。這樣我可以創建一些表並繼承這些綁定類。如何在不設置__tablename__的情況下繼承SQLAlchemy中的聲明式?

from flask.ext.sqlalchemy import SQLAlchemy 

db = SQLAlchemy() 

class Model1(db.Model): 
    __bind_key__ = 'db2' 

class Table1(Model1): 
    __tablename__ = 'table1' 
    name = db.Column(db.String(100)) 

,但我得到了一些麻煩:

sqlalchemy.exc.InvalidRequestError: Class <class '__main__.Model1'> 
    does not have a  __table__ or __tablename__ specified 
    and does not inherit from an existing table-mapped class. 

我怎麼能解決呢?

回答

5

您還可以使用__abstract__標誌:

from flask.ext.sqlalchemy import SQLAlchemy 

db = SQLAlchemy() 

class Model1(db.Model): 
    __abstract__ = True 
    __bind_key__ = 'db2' 

class Table1(Model1): 
    __tablename__ = 'table1' 
    name = db.Column(db.String(100)) 

中的類__abstract__設置爲True通過SQLAlchemy的聲明(docs here)被忽略。作爲獎勵,這使您可以將SQLAlchemy特定屬性(例如列)添加到您的Model1

相關問題