サーチ…


前書き

Flask-SQLAlchemyは、一般的なPythonオブジェクトリレーショナルマッパー(ORM)SQLAlchemyのサポートをFlaskアプリケーションに追加するFlask拡張です。 FlaskでSQLAlchemyを簡素化することを目的としています。

インストールと初期の例

インストール

pip install Flask-SQLAlchemy

シンプルモデル

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))
    email = db.Column(db.String(120), unique=True)

上記のコード例は単純なFlask-SQLAlchemyモデルを示していますが、オプションのtablenameをモデル宣言に追加することはできますが、データベース作成時にFlask-SQLAlchemyがクラス名をテーブル名として自動的に使用するため、

私たちのクラスは、設定された宣言ベースであるベースクラスモデルから継承します。したがって、SQLAlchemyを使用するときのように、ベースを明示的に定義する必要はありません。

参照

関係:1対多数

    class User(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(80))
        email = db.Column(db.String(120), unique=True)
        posts = db.relationship('Post', backref='user')


    class Post(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        content = db.Column(db.Text)
        user_id = db.Column(db.Integer, db.ForeignKey('user.id')

この例では、UserクラスとPostクラスの2つのクラスがあり、Userクラスは親クラスになり、投稿は私たちの投稿になります。投稿だけが1人のユーザーに属することができますが、1人のユーザーは複数の投稿を持つことができます。この例の親を参照する子に外部キーを配置するために、Postクラスに外部キーを配置してUserクラスを参照します。次に、SQLAlchemyオブジェクトdb介してアクセスする親に対してrelationship()を使用します。これにより、私たちの子であるPostクラスによって表されるアイテムのコレクションを参照することができます。

backrefを使用する双方向関係を作成するには、これにより、子が親を参照できるようになります。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow