flask-session是flask框架的session組件,由于原來flask內(nèi)置session使用簽名cookie保存,該組件則將支持session保存到多個(gè)地方,如:
安裝
pip3 install flask-session
存儲(chǔ)方式
redis
#!/usr/bin/env python# -*- coding:utf-8 -import redisfrom flask import Flask, sessionfrom flask_session import Session app = Flask(__name__)app.debug = Trueapp.secret_key = 'xxxx' app.config['SESSION_TYPE'] = 'redis' # session類型為redisapp.config['SESSION_PERMANENT'] = False # 如果設(shè)置為True,則關(guān)閉瀏覽器session就失效。app.config['SESSION_USE_SIGNER'] = False # 是否對(duì)發(fā)送到瀏覽器上session的cookie值進(jìn)行加密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 redisfrom flask import Flask, sessionfrom flask_session import Sessionimport memcache app = Flask(__name__)app.debug = Trueapp.secret_key = 'xxxx' app.config['SESSION_TYPE'] = 'memcached' # session類型為redisapp.config['SESSION_PERMANENT'] = True # 如果設(shè)置為True,則關(guān)閉瀏覽器session就失效。app.config['SESSION_USE_SIGNER'] = False # 是否對(duì)發(fā)送到瀏覽器上session的cookie值進(jìn)行加密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 redisfrom flask import Flask, sessionfrom flask_session import Session app = Flask(__name__)app.debug = Trueapp.secret_key = 'xxxx' app.config['SESSION_TYPE'] = 'filesystem' # session類型為redisapp.config[ 'SESSION_FILE_DIR'] = '/Users/wupeiqi/PycharmProjects/grocery/96.Flask新課程/組件/2.flask-session' # session類型為redisapp.config['SESSION_FILE_THRESHOLD'] = 500 # 存儲(chǔ)session的個(gè)數(shù)如果大于這個(gè)值時(shí),就要開始進(jìn)行刪除了app.config['SESSION_FILE_MODE'] = 384 # 文件權(quán)限類型 app.config['SESSION_PERMANENT'] = True # 如果設(shè)置為True,則關(guān)閉瀏覽器session就失效。app.config['SESSION_USE_SIGNER'] = False # 是否對(duì)發(fā)送到瀏覽器上session的cookie值進(jìn)行加密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 redisfrom flask import Flask, sessionfrom flask_session import Sessionimport pymongoapp = Flask(__name__)app.debug = Trueapp.secret_key = 'xxxx' app.config['SESSION_TYPE'] = 'mongodb' # session類型為redis app.config['SESSION_MONGODB'] = pymongo.MongoClient()app.config['SESSION_MONGODB_DB'] = 'mongo的db名稱(數(shù)據(jù)庫名稱)'app.config['SESSION_MONGODB_COLLECT'] = 'mongo的collect名稱(表名稱)' app.config['SESSION_PERMANENT'] = True # 如果設(shè)置為True,則關(guān)閉瀏覽器session就失效。app.config['SESSION_USE_SIGNER'] = False # 是否對(duì)發(fā)送到瀏覽器上session的cookie值進(jìn)行加密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 # 創(chuàng)建鏈接conn = MongoClient('47.93.4.198', 27017) # 選擇數(shù)據(jù)庫db = conn['db1'] # 選擇表posts = db['posts'] post_data = { 'name': 'alex', 'age': 18} # 表中插入數(shù)據(jù)# result = posts.insert_one(post_data) # 獲取一條數(shù)據(jù)# row = posts.find_one()# print(row) # # 獲取多條數(shù)據(jù)# rows = posts.find()# for row in rows:# print(row) # 刪除多條數(shù)據(jù)# rows = posts.delete_many(filter={})# print(rows) # 更新多條數(shù)據(jù)# posts.update({}, {'name': 'wupeiqi'}) sqlalchemy#!/usr/bin/env python# -*- coding:utf-8 -import redisfrom flask import Flask, sessionfrom flask_session import Session as FSessionfrom flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)app.debug = Trueapp.secret_key = 'xxxx' # 設(shè)置數(shù)據(jù)庫鏈接app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123@127.0.0.1:3306/fssa?charset=utf8'app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True # 實(shí)例化SQLAlchemydb = SQLAlchemy(app)app.config['SESSION_TYPE'] = 'sqlalchemy' # session類型為sqlalchemyapp.config['SESSION_SQLALCHEMY'] = db # SQLAlchemy對(duì)象app.config['SESSION_SQLALCHEMY_TABLE'] = 'session' # session要保存的表名稱app.config['SESSION_PERMANENT'] = True # 如果設(shè)置為True,則關(guān)閉瀏覽器session就失效。app.config['SESSION_USE_SIGNER'] = False # 是否對(duì)發(fā)送到瀏覽器上session的cookie值進(jìn)行加密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: 在寫好代碼后,不要著急運(yùn)行,需要先執(zhí)行進(jìn)入終端執(zhí)行一條創(chuàng)建數(shù)據(jù)庫表的命令:
bogon:pro-flask wupeiqi$ python3Python 3.5.1 (v3.5.1:37a07cee5969, Dec 5 2015, 21:12:44)[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> from app import db>>> db.create_all()>>>
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選