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模型的关联关系
# 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的多对多关联关系
stus = db.relationship('Student', secondary=c_s, backref='cou')
#relationship可以定义在关联模型的任何一方
__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 表示模型迁移导数据库中对应的表名称 """
__tablename__ = 'stu'
def save(self):
# 事务session的add方法,其实是准备插入语句,insert
db.session.add(self)
# 事务session提交了,数据才会插入到数据库中
db.session.commit()
#可视化结果,可以有也可以没有
# def __repr__(self):
# return '<Stuent(%s)>' % self.id
Flask 模型 多对多
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Flask 数据库多对多关系 实现学生与学院之间的多对多关系 这个例子中的关联表是 registrations,表...
- 一对一的关系比如 用户 和 身份证的区别就是 一对一的关系 一个用户只可以有一个身份证 class User(db...