web-dev-qa-db-ja.com

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())

そうすれば、他のすべてのスキーマオブジェクトはそれを継承でき、2つの列の宣言を繰り返す必要がなくなります。

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)
21
Max L.

SQLAlchemyは __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)
62
dirn