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...