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() >>>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。