Flask-day03

2019-01-10  本文已影响0人  陈small末

一、Flask-Migrate插件(模型迁移)

二、SQLAlchemy数据定义

字段

类型名称 python类型 描述
Integer int 常规整形,通常为32位
SmallInteger int 短整形,通常为16位
BigInteger int或long 精度不受限整形
Float float 浮点数
String str 可变长度字符串
Text str 可变长度字符串,适合大量文本
Boolean bool 布尔型
Date datetime.date 日期类型
Time datetime.time 时间类型
Interval datetime.timedelta 时间间隔
PickleType 任意Python对象 自动Pickle序列化
LargeBinary str 二进制

约束

可选参数 描述
primary_key 如果设置为True,则为该列表的主键
unique 如果设置为True,该列不允许相同值
index 如果设置为True,为该列创建索引,查询效率会更高
nullable 如果设置为True,该列允许为空。如果设置为False,该列不允许空值
default 定义该列的默认值
ForeignKey 外键(用来约束级联数据)

三、SQLAlchemy基本操作

修改和删除其都是基于查询。

四、SQLAlchemy数据查询

查询数据结果集

获取单个数据

数据筛选

offset和limit不区分顺序,offset先生效

五、SQLAlchemy数据之级联查询

relationship关联操作

lazy懒加载方式

db.relationship('声明级联数据', backref='表名', lazy=True)

班级模型类

class Grade(db.Model):
# 主键
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
# 班级名称 python1811 ios1803
g_name = db.Column(db.String(20))

# 但这不需要再进行迁移,就是执行迁移,也会提示没有任何改变
g_students = db.relationship('Student', backref='grade', lazy=True)

学生模型类

class Student(db.Model):
# 主键
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
# 名字
s_name = db.Column(db.String(20))
# 成绩
s_score = db.Column(db.Integer)
# 班级(外键)
s_grade = db.Column(db.Integer, db.ForeignKey(Grade.id))

级联查询flask中和django最大的区别是,django把对应该生成的生成好,flask需要做操作!

数据的获取

获取对应班级中的学生信息

方式一: 通过查询Student中s_grade与对应班级号相同的

students = Student.query.filter(Student.s_grade==gradeid)

方式二: 通过级联查询(获取到对应班级,班级学生信息就是g_students中)

students = Grade.query.get(gradeid).g_students

上一篇 下一篇

猜你喜欢

热点阅读