Flask之flask-session

简介

flask-session是flask框架的session组件,由于原来flask内置session使用签名cookie保存,该组件则将支持session保存到多个地方,如:

  • redis:保存数据的一种工具,五大类型。非关系型数据库
  • memcached
  • filesystem
  • mongodb
  • sqlalchmey:那数据存到数据库表里面

安装

pip3 install flask-session

配置存储方式

redis

#!/usr/bin/env python
# -*- coding:utf-8 -
import redis
from flask import Flask, session
from flask_session import Sessionapp = Flask(__name__)
app.debug = True
app.secret_key = 'xxxx'app.config['SESSION_TYPE'] = 'redis'  # session类型为redis
app.config['SESSION_PERMANENT'] = False  # 如果设置为True,则关闭浏览器session就失效。
app.config['SESSION_USE_SIGNER'] = False  # 是否对发送到浏览器上session的cookie值进行加密
app.config['SESSION_KEY_PREFIX'] = 'session:'  # 保存到session中的值的前缀
app.config['SESSION_REDIS'] = redis.Redis(host='127.0.0.1', port='6379', password='123123')  # 用于连接redis的配置Session(app)@app.route('/index')
def index():session['k1'] = 'v1'return 'xx'if __name__ == '__main__':app.run()

  

memcached

#!/usr/bin/env python
# -*- coding:utf-8 -
import redis
from flask import Flask, session
from flask_session import Session
import memcacheapp = Flask(__name__)
app.debug = True
app.secret_key = 'xxxx'app.config['SESSION_TYPE'] = 'memcached' # session类型为redis
app.config['SESSION_PERMANENT'] = True # 如果设置为True,则关闭浏览器session就失效。
app.config['SESSION_USE_SIGNER'] = False # 是否对发送到浏览器上session的cookie值进行加密
app.config['SESSION_KEY_PREFIX'] = 'session:' # 保存到session中的值的前缀
app.config['SESSION_MEMCACHED'] = memcache.Client(['10.211.55.4:12000'])Session(app)@app.route('/index')
def index():session['k1'] = 'v1'return 'xx'if __name__ == '__main__':app.run()

filesystem

#!/usr/bin/env python
# -*- coding:utf-8 -
import redis
from flask import Flask, session
from flask_session import Sessionapp = Flask(__name__)
app.debug = True
app.secret_key = 'xxxx'app.config['SESSION_TYPE'] = 'filesystem'  # session类型为redis
app.config['SESSION_FILE_DIR'] = '/Users/wupeiqi/PycharmProjects/grocery/96.Flask新课程/组件/2.flask-session'  # session类型为redis
app.config['SESSION_FILE_THRESHOLD'] = 500  # 存储session的个数如果大于这个值时,就要开始进行删除了
app.config['SESSION_FILE_MODE'] = 384  # 文件权限类型app.config['SESSION_PERMANENT'] = True  # 如果设置为True,则关闭浏览器session就失效。
app.config['SESSION_USE_SIGNER'] = False  # 是否对发送到浏览器上session的cookie值进行加密
app.config['SESSION_KEY_PREFIX'] = 'session:'  # 保存到session中的值的前缀Session(app)@app.route('/index')
def index():session['k1'] = 'v1'session['k2'] = 'v1'return 'xx'if __name__ == '__main__':app.run()

mongodb

#!/usr/bin/env python
# -*- coding:utf-8 -
import redis
from flask import Flask, session
from flask_session import Session
import pymongoapp = Flask(__name__)
app.debug = True
app.secret_key = 'xxxx'app.config['SESSION_TYPE'] = 'mongodb'  # session类型为redisapp.config['SESSION_MONGODB'] = pymongo.MongoClient()
app.config['SESSION_MONGODB_DB'] = 'mongo的db名称(数据库名称)'
app.config['SESSION_MONGODB_COLLECT'] = 'mongo的collect名称(表名称)'app.config['SESSION_PERMANENT'] = True  # 如果设置为True,则关闭浏览器session就失效。
app.config['SESSION_USE_SIGNER'] = False  # 是否对发送到浏览器上session的cookie值进行加密
app.config['SESSION_KEY_PREFIX'] = 'session:'  # 保存到session中的值的前缀Session(app)@app.route('/index')
def index():session['k1'] = 'v1'session['k2'] = 'v1'return 'xx'if __name__ == '__main__':app.run()

mongodb操作简单示例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from pymongo import MongoClient# 创建链接
conn = MongoClient('47.93.4.198', 27017)# 选择数据库
db = conn['db1']# 选择表
posts = db['posts']post_data = {'name': 'alex','age': 18
}# 表中插入数据
# result = posts.insert_one(post_data)# 获取一条数据
# row = posts.find_one()
# print(row)# # 获取多条数据
# rows = posts.find()
# for row in rows:
#     print(row)# 删除多条数据
# rows = posts.delete_many(filter={})
# print(rows)# 更新多条数据
# posts.update({}, {'name': 'wupeiqi'})

sqlalchemy

#!/usr/bin/env python
# -*- coding:utf-8 -
import redis
from flask import Flask, session
from flask_session import Session as FSession
from flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)
app.debug = True
app.secret_key = 'xxxx'# 设置数据库链接
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123@127.0.0.1:3306/fssa?charset=utf8'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True# 实例化SQLAlchemy
db = SQLAlchemy(app)app.config['SESSION_TYPE'] = 'sqlalchemy'  # session类型为sqlalchemy
app.config['SESSION_SQLALCHEMY'] = db # SQLAlchemy对象
app.config['SESSION_SQLALCHEMY_TABLE'] = 'session' # session要保存的表名称
app.config['SESSION_PERMANENT'] = True  # 如果设置为True,则关闭浏览器session就失效。
app.config['SESSION_USE_SIGNER'] = False  # 是否对发送到浏览器上session的cookie值进行加密
app.config['SESSION_KEY_PREFIX'] = 'session:'  # 保存到session中的值的前缀
FSession(app)@app.route('/index')
def index():session['k1'] = 'v1'session['k2'] = 'v1'return 'xx'if __name__ == '__main__':app.run()

PS: 在写好代码后,不要着急运行,需要先执行进入终端执行一条创建数据库表的命令:

bogon:pro-flask wupeiqi$ python3
Python 3.5.1 (v3.5.1:37a07cee5969, Dec  5 2015, 21:12:44)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from app import db
>>> db.create_all()
>>>

 应用场景

如果应用程序比较小,就用原生的加密ccokie 保存session(内置)

如果应用程序比较大,就用redis(flask-session)


转载于:https://www.cnblogs.com/jiangchunsheng/p/9218346.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速构建Windows 8风格应用10-设备方向

本篇博文主要介绍常用支持Windows 8操作系统设备的方向、如何获取当前设备方向、DisplayProperties类 常用支持Windows 8操作系统设备的方向在我们常用的设备当中,Windows 8是通过什么来监控设备方向呢?答案是方向传感器,那么对于设备的不同方…

android viewpager fragment传值,Android开发中如何解决Fragment +Viewpager滑动页面重复加载的问题...

前言之前在做一个Viewpager上面加载多个Fragment时总会实例化已经创建好的Fragmnet对象类似viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {Overridepublic Fragment getItem(int position) {switch(position){case 0:fragmentsnew Fragmnet01(…

CSDN怎么转载别人的博客

参考:CSDN怎么转载别人的博客 作者:zhongjianblackberry 发布时间:2018-03-06 11:57:59 网址:https://blog.csdn.net/zhongjianblackberry/article/details/79456338 目录转载CSDN博客步骤:Markdown和HTML相关小知识Ma…

青岛西海岸惠普大数据_青岛西海岸新区用好卫星大数据 为城市治理全面赋能...

来源:环球网为推进城市治理数字化程度,提升城市治理的智能化和精细化水平,青岛西海岸新区搭建了人工智能搜索视觉分析平台,以月度更新的频率,汇聚了新区0.5米高分辨率卫星影像数据,通过数据资源共享系统为各…

总结jenkins Android自动打包遇到的坑

一、ndk-build报错 [roothejianlai-jenkins LearnGradle]# ndk-build /usr/local/android-ndk-r8/ndk-build: /usr/local/android-ndk-r8/prebuilt/linux-x86/bin/make: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 解决方法:安装glibc.i6…

微博VS微信,谁更有移动优势

微博、微信,一个是中国互联网的明星,一个是中国互联网的后起之秀,前者出身于中国最大的门户网站新浪,后者出身于中国最大的即时通讯公司腾讯。作为各自公司在移动互联网上的主推产品,两者都背负着公司的巨大期望。那么…

android的热修复,Android热修复原理

热修复框架技术主要有三类,代码修复,资源修复,动态链接库修复。资源修复很多资源修复的框架参考了Instant Run资源修复的原理,所以先了解一下Instant RunInstant RunInstant Run是Android Studio 2.0以后新增的一个运行机制&#…

树莓派的四种登陆方式

参考:树莓派的4种登陆方式 作者:丶PURSUING 发布时间:2021-02-02 09:15:30 网址:https://blog.csdn.net/weixin_44742824/article/details/113524929?spm1001.2014.3001.5502 目录一、HDMI视频线二、串口1.修改sd卡中的系统文件2…

丰收互联蓝牙key怎么开机_ublox收购Rigado的蓝牙模块业务,扩大蓝牙低功耗产品组合...

全球领先的定位与无线通讯技术供应商u-blox 宣布,已与 Rigado签署资产购买协议,收购其蓝牙模块业务。Rigado是商业物联网Edge-as-a-Service(EaaS)边缘即服务网关解决方案的领先供应商,于2015年开始提供通过认证的无线模块。强化蓝牙产品系列此…

字符串类型str方法

首字母大写 temp rttty ret temp.capitalize() print(ret) 内容居中 temp kfkjdfj ret temp.center(21,*) ###内容居中,两边空白处可以用任意符号填充 print(ret) 子序列个数 temp ‘retegg is hh’ ret temp.count(g) #计算字符串中的出现的个数 print(re…

好的编程风格

1。关键字 if, while, for 后有一个空格 2。号之类的双目运算符两侧都有空格 3。后缀运算符和操作数之间不加空格 例如 s.a , foo(argu) , a[i] 4。, 号和 ; 号之后要加空格&#xff0c;例如 foo(argu1, argu2) for (i0; i<20; i) 5。关于双目运算符两侧加空格可以灵活规定&…

android 时间戳 时区,三句话理解时区与时间戳

从不浪费时间的人&#xff0c;没有工夫抱怨时间不够。 —— 杰弗逊第一句话&#xff1a;时间戳时间不分东西南北、在地球的每一个角落都是相同的。他们都有一个相同的名字&#xff0c;叫时间戳。时间戳 指的就是Unix时间戳(Unix timestamp)。它也被称为Unix时间(Unix time)、PO…

windows下的diskpart指令彻底格式化清除U盘

参考&#xff1a;windows下的diskpart指令修复U盘分区 作者&#xff1a;丶PURSUING 发布时间&#xff1a;2021-02-02 09:38:55 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/113537038?spm1001.2014.3001.5501 参考&#xff1a;原文链接 作者&…

简述控制反转ioc_讲一下你理解的 DI 、IoC、DIP ?

作者 | 木小楠链接 |cnblogs.com/liuhaorain/p/3747470.html摘要面向对象设计(OOD)有助于我们开发出高性能、易扩展以及易复用的程序。其中&#xff0c;OOD有一个重要的思想那就是依赖倒置原则(DIP)&#xff0c;并由此引申出IoC、DI以及Ioc容器等概念。本文我们将一起学习这些概…

Zimbra高级应用之-双向证书认证(一)

使用zimbra作为企业邮件服务器的公司&#xff0c;可能会遇到这样一种情况&#xff1a;使用用户名密码的传统认证方法&#xff0c;经常会发现有人恶意登录用户邮箱&#xff0c;采取暴力 破解&#xff0c;不断尝试登录密码。同时&#xff0c;简单密码组合很轻易被破解。从而在未经…

Redis学习与实战之字符串命令

字符串命令 一、基本字符串命令 1.基本字符串操作命令(设置、取值、删除、取长度) 命令名称命令功能执行时间复杂度Set为指定的一个键设置对应的值&#xff0c;如果已经存在&#xff0c;则直接覆盖原来的值O(1)Mset对多个键设置对应的值&#xff0c;如果值已经存在&#xff0c;…

html模糊遮罩层磨砂玻璃,常见的PPT背景:如何设计PPT背景?

第一种&#xff1a;纯色背景纯色背景分为两类&#xff0c;一种为黑白灰等“无色”背景&#xff0c;另一种就是彩色背景。黑白灰等无色背景&#xff0c;是安全的背景&#xff0c;容易配色&#xff0c;所以在使用上最多&#xff0c;如果没有色彩基础的朋友&#xff0c;建议还是用…

linux分文件编程、静态库与动态库

参考&#xff1a;linux静态库与动态库编程 作者&#xff1a;丶PURSUING 发布时间&#xff1a;2021-02-02 16:51:49 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/113539449?spm1001.2014.3001.5501 目录一、分文件编程的引入优点实现二、库的概念什…

十万个为什么儿童版_《虹猫蓝兔十万个为什么》上架爱奇艺奇巴布绘本馆

虹猫蓝兔绘本《虹猫蓝兔十万个为什么》上架爱奇艺奇巴布绘本馆全套专区。《虹猫蓝兔海底历险记》在爱奇艺PC端首页推广。红网时刻6月11日讯(记者 胡邦建 )今日&#xff0c;记者从湖南漫联卡通文化传媒有限公司获悉&#xff0c;该公司旗下的虹猫蓝兔绘本《虹猫蓝兔十万个为什么》…

获取${}中的值? 比如说var a=${date },无法取出date中的值

https://zhidao.baidu.com/question/2079297372778181268.html 转载于:https://www.cnblogs.com/DixinFan/p/9221953.html