如何在Flask-SQLAlchemy中声明基本模型类?

时间:2014-04-10 00:27:58

标签: flask sqlalchemy flask-sqlalchemy

我想声明一个所有其他模式对象的基类 可以继承,例如:

class Base(db.Model):
    created_on = db.Column(db.DateTime, default=db.func.now())
    updated_on = db.Column(db.DateTime, default=db.func.now(), onupdate=db.func.now())

然后所有其他模式对象都可以从中继承而不必重复 两栏的声明。

我如何在Flask-SQLAlchemy中执行此操作?

from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key = True)
    email = db.Column(db.String(255), unique = True)

1 个答案:

答案 0 :(得分:53)

SQLAlchemy提供directive called __abstract__。您可以使用它来告诉SQLAlchemy不要为特定模型创建表。该模型可以用作您的基类。

from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)

class Base(db.Model):
    __abstract__ = True

    created_on = db.Column(db.DateTime, default=db.func.now())
    updated_on = db.Column(db.DateTime, default=db.func.now(), onupdate=db.func.now())


class User(Base):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key = True)
    email = db.Column(db.String(255), unique = True)