Flask之flask-session的具体使用
flask-session是flask框架的session组件,由于原来flask内置session使用签名cookie保存,该组件则将支持session保存到多个地方,如:
- redis
- memcached
- filesystem
- mongodb
- sqlalchmey
安装
pip3installflask-session
存储方式
redis
#!/usr/bin/envpython
#-*-coding:utf-8-
importredis
fromflaskimportFlask,session
fromflask_sessionimportSession
app=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')
defindex():
session['k1']='v1'
return'xx'
if__name__=='__main__':
app.run()
memcached
#!/usr/bin/envpython
#-*-coding:utf-8-
importredis
fromflaskimportFlask,session
fromflask_sessionimportSession
importmemcache
app=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')
defindex():
session['k1']='v1'
return'xx'
if__name__=='__main__':
app.run()
filesystem
#!/usr/bin/envpython
#-*-coding:utf-8-
importredis
fromflaskimportFlask,session
fromflask_sessionimportSession
app=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')
defindex():
session['k1']='v1'
session['k2']='v1'
return'xx'
if__name__=='__main__':
app.run()
mongodb
#!/usr/bin/envpython
#-*-coding:utf-8-
importredis
fromflaskimportFlask,session
fromflask_sessionimportSession
importpymongo
app=Flask(__name__)
app.debug=True
app.secret_key='xxxx'
app.config['SESSION_TYPE']='mongodb'#session类型为redis
app.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')
defindex():
session['k1']='v1'
session['k2']='v1'
return'xx'
if__name__=='__main__':
app.run()
mongodb操作简单示例:
#!/usr/bin/envpython
#-*-coding:utf-8-*-
frompymongoimportMongoClient
#创建链接
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()
#forrowinrows:
#print(row)
#删除多条数据
#rows=posts.delete_many(filter={})
#print(rows)
#更新多条数据
#posts.update({},{'name':'wupeiqi'})
sqlalchemy
#!/usr/bin/envpython
#-*-coding:utf-8-
importredis
fromflaskimportFlask,session
fromflask_sessionimportSessionasFSession
fromflask_sqlalchemyimportSQLAlchemy
app=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')
defindex():
session['k1']='v1'
session['k2']='v1'
return'xx'
if__name__=='__main__':
app.run()
PS:在写好代码后,不要着急运行,需要先执行进入终端执行一条创建数据库表的命令:
bogon:pro-flaskwupeiqi$python3 Python3.5.1(v3.5.1:37a07cee5969,Dec52015,21:12:44) [GCC4.2.1(AppleInc.build5666)(dot3)]ondarwin Type"help","copyright","credits"or"license"formoreinformation. >>>fromappimportdb >>>db.create_all() >>>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。