Skr-Eric的Flask课堂(五)——Flask的关系映射和cookies和session

数据库的操作

1.增加(略)

2.查询

1.基于db.session(略)

2.基于Models进行查询

Models.query.查询过滤器函数(条件参数).查询执行函数()

3.删除

1.查询出要删除的实体对象

u=db.session.query(Models).filter_by(xxx).first()

2.根据提供的 删除方法进行删除

db.session.delete(u)

注意:

真正的删除并不是通过删除操作完成,而是通过修改完成的

4.修改

1.查

将 要修改的信息查询出来

2.改

实体对象.属性 = 值

3.保存

db.session.add(实体对象)

 

关系映射

1.一对多

语法:

1.在 "多" 的实体中

增加一个列,引用自"一"表的主键列

外键列名 = db.Column(db.Integer,db.ForeignKey('主表.主键'))

2.在 "一" 的实体中

增加关联属性以及反向引用关系

ex:

关联属性:

在 course 对象中,通过一个属性能够得到对应的所有的teacher们

关联属性,是应该加在 Course 的实体类中

反向引用:

在 teacher 对象中,通过一个属性能够得到对应的course

反向引用关系属性,是应该加在 Teacher 的实体类中

增加关联属性和反向引用关系:

属性名=db.relationship('多表实体类名',关系选项)

关系选项:

选项名               说明

backref              在关系的另一个模型中添加的反向引用属性名

(准备在"多"的实体中增加对"一"的实体引用的属性名)

lazy                 指定如何加载当前的相关记录

 select:首次访问时加载记录

 immediate:源对象加载后马上加载相关记录

 subquery:效果同上,利用子查询方式加载记录

 noload:永不加载记录

 dynamic:默认不加载记录,但会提供加载记录的查询

uselist              如果设置为False,表示不使用列表表示关联数据,而使用标量

secondary            指定多对多关系映射中的关联表的名字

2.一对一

1.什么是一对一

A表中的一条记录只能与B表中的一条记录相关联

B表中的一条记录只能与A表中的一条记录相关联

2.在SQLAlchemy中的体现

1.在任意一个类中增加

外键列名 = db.Column(db.Integer,db.ForeignKey('主键表.主键列'))

2.在另外一个类中增加

关联属性 和 反向引用关系属性

属性=db.relationship('关联的实体类',backref='反向引用属性名',uselist=False)

3.多对多

1.什么是多对多

A表中的一条数据可以与B表中任意多条数据相关联

B表中的一条数据可以与A表中任意多条数据相关联

2.实现

在数据库中使用第三张表(关联表)

在编程语言中,可以不编写对应的实体类

1.创建第三张表

student_course = db.Table(

'student_course',#在数据库中表名

db.Column('id',db.Integer,primary_key=True),

db.Column(

'student_id',

db.Integer,

db.ForeignKey('student.id')),

db.Column(

'course_id',

db.Integer,

db.ForeignKey('course.id'))

)

 

cookies / cookie

1.什么是cookies

cookie 是一种数据存储手段

将一段文本保存在客户端(浏览器)的一种手段,并可以长时间保存

2.cookies的使用场合

1.记住密码

2.记住搜索关键词

3.Flask 中使用 cookies

1.使用响应对象,将数据保存进cookies(客户端)

1.resp = make_response("字符串"|render_template())

2.resp = redirect('地址')

cookies 的语法

响应对象.set_cookie(key,value,max_age)

key:保存的cookie的名称

value:保存的cookie的值

max_age:保存的时间,取值为数字,默认以 s 为单位

60 :一分钟

60 * 60 :一小时

60 * 60 * 24 :一天

60 * 60 *24 * 365 :一年

2.获取 cookie 的值

每次向服务器发送请求时,都会把cookie中的数据封装到request中并带到服务器上

在flask中通过 request.cookies 获取所有的cookies值

3.删除cookie的值

响应对象.delete_cookie('key')

 

session - 会话

1.什么是session

session是保存在服务器上,为每个浏览器所开辟的一段空间

2.session 在 Flask 中的实现

1.配置 SECRET_KEY

app.config['SECRET_KEY']="xiangxieshaxiesha"

2.使用session

from flask import session

1.向session中保存数据

session['key']=value

2.从session中取值

value = session['key']

value = session.get('key','')

3.从session中删除数据

del session['key']

 

 

 

想要看更多的课程请微信关注SkrEric的编程课堂

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值