![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Flask
文章平均质量分 70
kd丹妮儿
这个作者很懒,什么都没留下…
展开
-
利用sqlacodegen自动生成ORM实体类
1、安装pip install sqlacodegen2、使用sqlacodegen生成案列sqlacodegen --tables test --outfile ./Found.py mssql+pyodbc://sa:Nuctech_50@dsn_name原创 2019-09-30 17:35:41 · 244 阅读 · 0 评论 -
SQLAlchemy之表结构
1、创建表1.ORM不能创建数据库,只能创建表2.默认情况下,⽣成的表名称是类名称的⼩写形式,如果需要指定,设置tablename3.链接数据库的格式:<协议名称>://<⽤户名>:<密码>@<ip地址>:<端⼝>/<数据库名>如果使⽤的是mysqldb驱动,协议名: mysql如果使⽤的是pymysql驱...原创 2019-09-29 10:11:50 · 906 阅读 · 0 评论 -
SQLAlchemy概述
一. 介绍SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获取执行结果。pip install sqlalchemy组成部分:Engine,框架的引擎 Connection Pooling ,数据库连接池 Dialect,选择连接数...原创 2019-09-29 09:15:54 · 183 阅读 · 0 评论 -
Flask中内置session处理机制源码剖析3(使用flask-session)
1、使用RedisSessionInterfacefrom flask import Flask,sessionapp = Flask(__name__)app.secret_key = "secret_key"#方式一:# from flask_session import RedisSessionInterface# from redis import Redis# c...原创 2019-09-27 16:16:07 · 108 阅读 · 0 评论 -
Flask中内置session处理机制源码剖析2(自定义session)
1、自定义session思路请求刚到来: 创建特殊的字典,并添加到Local中: 调用关系: self.session = session_interface.open_session(self.app, self.request) 由于默认app中的session...原创 2019-09-27 13:35:50 · 164 阅读 · 0 评论 -
Flask之CORS跨域配置
1、安装pip install flask-cors2、flask-cors包也提供了两种方式方式 范围 说明 @cross_origin装饰器 配置单个路由 适用于配置特定的API接口 CORS函数 配置全局API接口 适用于全局的API接口配置 这两中方法原理,都是最后在视图函数执行完后,添加响应头来允许跨域的。2.1、cr...原创 2019-09-26 17:28:28 · 1942 阅读 · 0 评论 -
Flask中内置session处理机制源码剖析1
Flask中的session处理机制请求刚到来:获取随机字符串,存在则去"数据库"(可以是数据库,文件,内存等)中获取原来的个人数据,否则创建一个空容器。--->内存:对象(随机字符串,(放置数据的容器)) 视图函数:操作内存中对象(对象(随机字符串,(放置数据的容器))) 请求终止/响应:内存中对象(随机字符串,(放置数据的容器)) 保存到数据库或者文件等 随机字符串写在用户...原创 2019-09-26 16:56:09 · 130 阅读 · 0 评论 -
Flask知识点总结
1、Flask配置文件 路由 请求相关&路由 cookie&session 模板jinja2 扩展 闪现 蓝图 中间件2、上下文管理 -----请求上下文:RequestContext ----request 保存用户请求相关信息 ----se...原创 2019-09-25 09:16:26 · 201 阅读 · 0 评论 -
Flask离线测试时,with语法使用
class SQLHelper(object): def open(self): pass def close(self): pass def fetchall(self): pass def __enter__(self): self.open() return self ...原创 2019-09-24 18:24:31 · 122 阅读 · 0 评论 -
SQLAlchemy之基本增删改查
# -*- coding:utf-8 -*-import timeimport threadingfrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint, Indexfrom s...原创 2019-09-29 17:18:36 · 265 阅读 · 0 评论 -
SQLAlchemy之常用操作
# 条件ret = session.query(Users).filter_by(name='alex').all()ret = session.query(Users).filter(Users.id > 1, Users.name == 'eric').all()ret = session.query(Users).filter(Users.id.between(1, 3), U...原创 2019-09-29 17:29:05 · 120 阅读 · 0 评论 -
SQLAlchemy之原生SQL语句
# -*- coding:utf-8 -*-import timeimport threadingfrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint, Indexfrom ...原创 2019-09-30 09:00:13 · 3492 阅读 · 0 评论 -
Flask之flask_migrate组件
from flask import Flaskfrom flask_script import Managerfrom sansa import dbfrom flask_migrate import Migrate,MigrateCommandapp = Flask(__name__)manager = Manager(app)migrate = Migrate(db=db...原创 2019-09-30 17:22:45 · 347 阅读 · 0 评论 -
Flask-SQLAlchemy项目实战
项目目录结构如下:Flask-SQLAlchemy sansa views account.py __init__.py models.py create_table.py run.py settings.py代码如下...原创 2019-09-30 16:26:51 · 1042 阅读 · 1 评论 -
Flask之flask-script组件
Flask Script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell,设置数据库的脚本,cronjobs,及其他运行在web应用之外的命令行任务;使得脚本和系统分开;官方文档:http://flask-script.readthedocs.io/en/latest/from flask import Flaskfrom fla...原创 2019-09-30 16:16:12 · 193 阅读 · 0 评论 -
win10系统使用flask-sqlalchemy连接sqlserver2014报错:未发现数据源名称并且未指定默认驱动程序
错误信息:sqlalchemy.exc.InterfaceError: (pyodbc.InterfaceError) ('IM002', '[IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 (0) (SQLDriverConnect)')解决方案:1、python配置文件中设置:SQLALCHEMY_DATABASE_U...原创 2019-09-30 14:27:20 · 1260 阅读 · 0 评论 -
pipreqs导出当前项目依赖库
1、安装pip install pipreqs2、导出依赖库在项目的当前路径输入:pipreqs ./ --encoding=utf-8来导出当前项目依赖的库pip freeze > requestments.txt 导出该电脑已经安装的python库。3、安装依赖库pip install -r requirements.txt ...原创 2019-09-30 11:52:28 · 457 阅读 · 0 评论 -
SQLAlchemy之关联子查询
#!/usr/bin/env python# -*- coding:utf-8 -*-import timeimport threadingfrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, String, ForeignKey, UniqueCo...原创 2019-09-30 10:10:58 · 938 阅读 · 0 评论 -
SQLAlchemy之多对多relationship
#!/usr/bin/env python# -*- coding:utf-8 -*-import timeimport threadingfrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, String, ForeignKey, UniqueCo...原创 2019-09-30 09:39:40 · 513 阅读 · 0 评论 -
SQLAlchemy之基于relationship操作ForeignKey
创建表如下:import datetimefrom sqlalchemy import create_enginefrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, String, Text, ForeignKey, DateTime, Unique...原创 2019-09-30 09:32:16 · 937 阅读 · 2 评论 -
Flask应用上下文源码剖析流程1(应用上下文的存取操作)
1、在globals.py中定义了_app_ctx_stack全局变量2、存值2.1、app运行后,执行wsgi_app方法2.2、在RequestContext的push方法中会创建AppContext对象app_ctx.2.3、app_ctx.push()执行AppContext的push方法,将app_ctx通过LocalProxy存入Local中。3、移...原创 2019-09-24 18:22:44 · 401 阅读 · 0 评论 -
Flask应用上下文源码剖析流程2(多app应用)
实际开发工作中不需要用,蓝图可实现同样的功能,了解即可!例子:from flask import Flask,current_appfrom werkzeug.wsgi import DispatcherMiddlewarefrom werkzeug.serving import run_simpleapp1 = Flask("app01")app2 = Flask("app0...原创 2019-09-24 18:22:58 · 115 阅读 · 0 评论 -
Flask之闪现
闪现是基于session的 ,session是基于会话的,所以不同用户的请求不会搞混。from flask import Flask,request,redirect,flash,get_flashed_messagesapp = Flask(__name__)app.secret_key="ddtegesgee"@app.route('/index')def index()...原创 2019-09-11 13:39:11 · 107 阅读 · 0 评论 -
python+flask实现API
1、FlaskFlask依赖两个外部库: Jinja2 模板引擎和 Werkzeug WSGI 工具集 。1.1、安装pip install flask1.2、一个最小的应用#-*-coding:utf-8-*-#pip install flask#pip install flask-restful#导入了 Flask 类。这个类的实例将会是我们的 WSGI 应用程...原创 2018-11-14 11:09:34 · 6511 阅读 · 0 评论 -
Flask快速入门(1)
目录1、Flask1.1、安装1.2、一个最小的应用1.3、外部可访问的服务器1.4、调试模式1.5、路由1.5.1、变量规则1.5.2、唯一 URL / 重定向行为1.5.3、构造 URL1.6、HTTP 方法1.7、静态文件1.8、模板渲染1.9、访问请求数据1.9.1、环境局部变量1.9.2、请求对象1.9.3、文件上传1....原创 2018-12-19 14:35:07 · 369 阅读 · 1 评论 -
Flask上下文环境(3)
目录1、应用上下文环境1.1、应用上下文的作用1.2、构建应用上下文环境1.3、应用上下文的实现方式1.4、应用上下文Hook函数2、请求上下文环境2.1、请求上下文的生命周期2.2、构建请求上下文环境2.3、请求上下文的实现方式2.4、回调和错误2.5、留意代理2.6、错误时的上下文保护3、上下文设计思想4、全局对象gFlask提供了两...原创 2018-12-20 15:55:47 · 439 阅读 · 0 评论 -
Python3+Flask开发一个应用(2)
在我们真正开始之前,让我们创建这个应用所需的文件夹:/flaskr /static /templatesflaskr 文件夹不是一个 Python 包,只是个我们放置文件的地方。在接下来的步骤中,我们会直接把数据库模式和主模块放在这个目录中。 用户可以通过 HTTP 访问 static 文件夹中的文件,也即存放 css 和 javascript 文件的地方。Flask 会...原创 2018-12-20 17:11:36 · 636 阅读 · 0 评论 -
Flask-RESTful快速入门(1)
Flask-RESTful 是一个 Flask 扩展,它添加了快速构建 REST APIs 的支持。它当然也是一个能够跟你现有的ORM/库协同工作的轻量级的扩展。Flask-RESTful 鼓励以最小设置的最佳实践。如果你熟悉 Flask 的话,Flask-RESTful 应该很容易上手。1、一个最小的API#-*-coding:utf-8-*-from flask import Fl...原创 2018-12-23 16:06:14 · 1273 阅读 · 2 评论 -
Flask信号源码流程剖析及源码操作流程(重要,方便找扩展点!!!)
1、介绍Flask框架中的信号基于blinker,其主要就是让开发者可以在flask请求过程中定制一些用户行为。从 Flask 0.6 开始, Flask 集成了信号支持。这个支持由 blinker 库提供, 并且当它不可用时会优雅地退回。什么是信号?信号通过发送发生在核心框架的其它地方或 Flask 扩展的动作时的通知来帮助你解耦应用。简而言之,信号允许特定的发送端通知订阅者发生了什...原创 2018-12-27 09:13:52 · 165 阅读 · 0 评论 -
Flask之配置文件
有很多方法,推崇的方法是:app.config.from_object('pro_flask.settings.TestingConfig')settings.pyclass Config(object): DEBUG = False TESTING = False DATABASE_URI = 'sqlite://:memory:' cl...原创 2019-08-27 15:41:26 · 92 阅读 · 0 评论 -
Flask之蓝图
一个大型项目中视图比较多,如果仅仅是写在app.py中不方便管理,蓝图就可以做到分功能分目录结构1、蓝图主要功能在于为Flask应用提供目录管理.蓝图:用于实现单个应用的视图、模板、静态文件的集合。蓝图就是模块化处理的类简单来说,蓝图就是一个存储操作路由映射方法的容器,主要用来实现客户端请求和URL相互关联的功能。 在Flask中,使用蓝图可以帮助我们实现模块化应用的功能。2、...原创 2019-09-19 09:38:05 · 408 阅读 · 0 评论 -
Flask之中间件
from flask import Flaskapp = Flask(__name__)app.secret_key = 'some_secret'@app.route('/')def index(): return "index"class MiddleWare: def __init__(self, wsgi_app): self.wsgi_...原创 2019-09-19 09:42:04 · 182 阅读 · 0 评论 -
Flask之请求扩展
#!/usr/bin/env python# -*- coding:utf-8 -*-from flask import Flask, Request, render_templateapp = Flask(__name__, template_folder='templates')app.debug = True@app.before_first_requestdef bef...原创 2019-09-19 09:42:59 · 215 阅读 · 0 评论 -
Python数据库连接池DBUtils
如果没有连接池,使用pymysql来连接数据库时,单线程应用完全没有问题,但如果涉及到多线程应用那么就需要加锁,一旦加锁就无并发可言了,那么连接势必就会排队等待,当请求比较多时,性能就会降低了。# -*- coding:utf-8 -*-import pymysqlimport threadingCONN = pymysql.connect(host='127.0.0.1', ...原创 2019-09-23 17:19:00 · 732 阅读 · 0 评论 -
Flask 处理高并发、多线程
发现flask服务处理多线程、高并发的一下方法,主要有一下几个方面:1.通过设置app.run()的参数,来达到多线程的效果,具体参数:# 1.threaded : 多线程支持,默认为False,即不开启多线程;app.run(threaded=True)# 2.processes:进程数量,默认为1.app.run(processes=True)ps:多进程或多线程只能选择一个...原创 2019-09-23 16:26:34 · 5546 阅读 · 1 评论 -
Flask请求上下文源码剖析流程
1、谈谈你对flask上下文管理机制的理解?首先说一下ThreadingLocal,对每个线程保存它的数据,但是flask为了支持协程,自己封装了一个Local对象,其中创建了一个字典,{greenlet加唯一标示:存数据},这样可以保证数据隔离。请求到来时:1、把request,session,等请求相关的数据封装到了RequestContext中,2、再将RequestCont...原创 2019-09-23 16:23:06 · 131 阅读 · 0 评论 -
Flask请求上下文源码剖析流程3(Flask中如何处理请求)
1、通过查看源码可以发现,request是一个全局变量,在程序启动时就已经创建了 其中偏函数partial的使用如下: v = partial(add,1) 当执行v()时,会将参数1传给add方法!1.2、执行LocalProxy的__init__方法,其中loca...原创 2019-09-23 15:21:19 · 108 阅读 · 0 评论 -
Flask请求上下文源码剖析流程2(Flask中如何释放请求相关数据)
1、在Flask类的wsgi_app方法中,try执行请求相关逻辑,请求执行完执行ctx.auto_pop方法:2、RequestContext类方法的auto_pop方法中会执行self.pop方法:3、RequestContext类方法的pop方法调用全局变量_request_ctx_stack.pop方法:4、_request_ctx_stack是LocalStack...原创 2019-09-23 13:48:46 · 491 阅读 · 0 评论 -
Flask请求上下文源码剖析流程1(Flask中如何保存请求相关数据)
以request为例,因为request最简单。一个完整的app应用程序如下:from flask import Flaskapp = Flask(__name__)@app.route("/")def hello(): return "hello world"if __name__ == "__main__": app.__call__ app....原创 2019-09-23 12:33:49 · 396 阅读 · 0 评论 -
Flask之分析线程和协程threadinglocal应用场景(Flask的request,session内部实现原理2)
request源码分析: 1、若考虑单进程单线程,可使用全局变量; 2、若考虑单进程多线程,可使用threading.local; 3、若考虑单进程单线程(多个协程),threading.local做不到,需要自定义类似threading.loacal(支持协程);如下是自定义的可支持协程,线程的Local类:需要注意:1、__se...原创 2019-09-20 17:10:27 · 247 阅读 · 0 评论