Flask 模型 多對多


from flask_sqlalchemy import SQLAlchemy
from datetime import datetime


db = SQLAlchemy()


class Grade(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    g_name = db.Column(db.String(10), nullable=True)
    # 定義模型Grade和Student模型的關聯(lián)關系
    # relationship可以定義在任何一方 {哪一張表} {范查詢}
    stus = db.relationship('Student', backref='g')

    __tablename__ = 'grade'


c_s = db.Table('c_s',
               db.Column('c_id', db.Integer, db.ForeignKey('course.id')),
               db.Column('s_id', db.Integer, db.ForeignKey('stu.id')))


class Course(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    c_name = db.Column(db.String(10), nullable=False)
    # 指定Course和Student的多對多關聯(lián)關系
    stus = db.relationship('Student', secondary=c_s, backref='cou')
    #relationship可以定義在關聯(lián)模型的任何一方

    __tablename__ = 'course'


class Student(db.Model):
    # 自增主鍵 id 字段
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)

    s_name = db.Column(db.String(10), unique=True, nullable=False)

    s_age = db.Column(db.Integer, default=18)
    # auto_now_add
    # auto_now 只在save()方法調用的時候auto_now字段才做更新。
    # update() 方法調用時auto_now字段不跟新
    create_time = db.Column(db.DateTime, default=datetime.now)
    """
        # 定義外鍵      
        sql: alter table stu add grade_id int;
        sql: alter table stu add foreign key(grade_id) references grade(id)    """

    grade_id = db.Column(db.Integer, db.ForeignKey('grade.id'), nullable=True)

    """
        # 如果沒定義 tablename, 那么名字為模型名稱小寫
        # 定義 tablename 表示模型遷移導數(shù)據(jù)庫中對應的表名稱     """
    __tablename__ = 'stu'

    def save(self):
        # 事務session的add方法,其實是準備插入語句,insert
        db.session.add(self)
        # 事務session提交了,數(shù)據(jù)才會插入到數(shù)據(jù)庫中
        db.session.commit()

    #可視化結果,可以有也可以沒有
    # def __repr__(self):
    #     return '<Stuent(%s)>' % self.id

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容