原创 SQLAlchemy之原生SQL語句

# -*- coding:utf-8 -*- import time import threading from sqlalchemy.ext.declarative import declarative_base from sql

原创 SQLAlchemy之基於relationship操作ForeignKey

創建表如下: import datetime from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base fr

原创 Flask之flask-script組件

Flask Script擴展提供向Flask插入外部腳本的功能,包括運行一個開發用的服務器,一個定製的Python shell,設置數據庫的腳本,cronjobs,及其他運行在web應用之外的命令行任務;使得腳本和系統分開; 官方文檔:h

原创 反射的妙用

  python面向對象中的反射:通過字符串的形式操作對象相關的屬性,python中一切事物都是對象(都可以用反射) 下列方法適用於類和對象: 檢查是否含有某屬性---hasattr 返回布爾值 獲取屬性---getattr 沒有就會報錯

原创 Flask之threading.local(Flask的request,session內部實現原理1)

threading.local對象,用於爲每個線程開闢一塊空間來保存他獨有的值 # !/usr/bin/env python # -*- coding:utf-8 -*- import threading local_values

原创 SQLAlchemy之關聯子查詢

#!/usr/bin/env python # -*- coding:utf-8 -*- import time import threading from sqlalchemy.ext.declarative import decl

原创 Flask之分析線程和協程threadinglocal應用場景(Flask的request,session內部實現原理2)

request源碼分析:         1、若考慮單進程單線程,可使用全局變量;         2、若考慮單進程多線程,可使用threading.local;         3、若考慮單進程單線程(多個協程),threading.l

原创 Flask中內置session處理機制源碼剖析1

Flask中的session處理機制 請求剛到來:獲取隨機字符串,存在則去"數據庫"(可以是數據庫,文件,內存等)中獲取原來的個人數據,否則創建一個空容器。--->內存:對象(隨機字符串,(放置數據的容器)) 視圖函數:操作內存中對象(對

原创 Flask應用上下文源碼剖析流程1(應用上下文的存取操作)

1、在globals.py中定義了_app_ctx_stack全局變量 2、存值 2.1、app運行後,執行wsgi_app方法 2.2、在RequestContext的push方法中會創建AppContext對象app_ctx.

原创 Flask知識點總結

1、Flask 配置文件 路由 請求相關&路由 cookie&session 模板jinja2 擴展 閃現 藍圖 中間件 2、上下文管理           -----請求上下文:RequestContext              

原创 Flask請求上下文源碼剖析流程2(Flask中如何釋放請求相關數據)

1、在Flask類的wsgi_app方法中,try執行請求相關邏輯,請求執行完執行ctx.auto_pop方法: 2、RequestContext類方法的auto_pop方法中會執行self.pop方法: 3、RequestConte

原创 Flask之藍圖

一個大型項目中視圖比較多,如果僅僅是寫在app.py中不方便管理,藍圖就可以做到分功能分目錄結構 1、藍圖主要功能在於爲Flask應用提供目錄管理. 藍圖:用於實現單個應用的視圖、模板、靜態文件的集合。 藍圖就是模塊化處理的類 簡單來說,

原创 Flask之請求擴展

#!/usr/bin/env python # -*- coding:utf-8 -*- from flask import Flask, Request, render_template app = Flask(__name__,

原创 SQLAlchemy之表結構

1、創建表 1.ORM不能創建數據庫,只能創建表 2.默認情況下,⽣成的表名稱是類名稱的⼩寫形式,如果需要指定,設置tablename 3.鏈接數據庫的格式: <協議名稱>://<⽤戶名>:<密碼>@<ip地址>:<端⼝>/<數據庫名>

原创 Flask之中間件

from flask import Flask app = Flask(__name__) app.secret_key = 'some_secret' @app.route('/') def index(): retur