1 flask-session
安装
pip3 install flask-session
使用
# 1 导入 from flask import Flask,session import redis from flask_session import Session # 2 配置 app.config['SESSION_TYPE'] = 'redis' app.config['SESSION_REDIS'] = redis.Redis(host='140.143.227.206',port=6379,password='1234') Session(app) # 3 视图函数里使用 session['user'] = 'alex'
原理
1 session数据保存到redis中 随机字符串1: {'name': 'alex', 'age': 23} 随机字符串2: {'name': 'sdf', 'age': 23} 2 随机字符串返回给用户
2 DBUtils数据库连接池
使用了local.threading
安装
pip3 install DBUtils
两种连接模式
1 为每一个线程创建连接, 线程即使调用了close也不会关闭, 只是把连接重新放到连接池, 供【自己线程】使用. 当线程终止时, 连接自动关闭.
from DBUtils.PooledDB import PersistentDB, POOL = PersistentDB(...) # 1 建立连接池 conn = POOL.connection(shareable=False) # 2 去连接池获取一个连接
2 创建一批连接大连接池, 供【所有线程】使用 【推荐】
from DBUtils.PooledDB import PooledDB POOL = PooledDB(...) # 1 建连接池 conn = POOL.connection() # 2 去连接池获取一个连接
3 wtforms
https://www.cnblogs.com/wupeiqi/articles/8202357.html
作用:
- 生成HTML标签
- form表单验证
安装:
pip3 install wtforms
使用:
- 用户登录
- 用户注册
- 从数据库获取数据
钩子函数
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
class LoginForm(Form): name = simple.StringField( validators=[ validators.DataRequired(message='用户名不能为空.'), ], widget=widgets.TextInput(), render_kw={'placeholder':'请输入用户名'} ) pwd = simple.PasswordField( validators=[ validators.DataRequired(message='密码不能为空.'), ], render_kw={'placeholder':'请输入密码'} ) def validate_name(self, field): """ 自定义name字段规则 :param field: :return: """ # 最开始初始化时,self.data中已经有所有的值 print('钩子函数获取的值',field.data) if not field.data.startswith('old'): raise validators.ValidationError("用户名必须以old开头") # 继续后续验证 # raise validators.StopValidation("用户名必须以old开头") # 停止后续验证
4 flask_sqlalchemy
安装
pip3 install flask-sqlalchemy
使用
第一步: 导入并实例化SQLAlchemy # chun.__init__.py from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() 注意事项: - 必须在导入蓝图之前 - 必须导入models.py 第二步: 初始化 db.init_app(app) 第三步:在配置文件中写入配置 # ##### SQLALchemy配置文件 ##### SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123456@127.0.0.1:3306/s9day122?charset=utf8" SQLALCHEMY_POOL_SIZE = 10 SQLALCHEMY_MAX_OVERFLOW = 5 第四步: 创建models.py中的类(对应数据库表) # chun/models.py from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column from sqlalchemy import Integer,String,Text,Date,DateTime from sqlalchemy import create_engine from chun import db class Users(db.Model): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String(32), index=True, nullable=False) depart_id = Column(Integer) 第五步:生成表(使用app上下文) # 离线脚本 from chun import db,create_app app = create_app() app_ctx = app.app_context() # app_ctx = app/g with app_ctx: # __enter__,通过LocalStack将app_ctx放入Local中 db.create_all() # 调用LocalStack去Local中获取app_ctx(app,g),再去app中获取配置 第六步:基于ORM对数据库进行操作。 from flask import Blueprint from chun import db from chun import models us = Blueprint('us',__name__) @us.route('/index') def index(): # 1 使用SQLAlchemy在数据库中插入一条数据 # db.session.add(models.Users(name='高件套',depart_id=1)) # db.session.commit() # db.session.remove() # 2 查询 result = db.session.query(models.Users).all() print(result) db.session.remove() return 'Index'
5 flask-script
安装
pip3 install flask-script
使用
1 配置 from flask_script import Manager manager = Manager(app) manager.run() # 代替了app.run() 2 使用命令: 1 runserver python manage.py runserver -h '127.0.0.1' -p 5000 2 自定义命令: 位置传参 @manager.command def custom(arg): """ 自定义命令 python manage.py custom 123 :param arg: :return: """ print(arg) 3 自定义命令: 关键字传参 @manager.option('-n', '--name', dest='name') @manager.option('-u', '--url', dest='url') def cmd(name, url): """ 自定义命令 执行: python manage.py cmd -n wupeiqi -u http://www.oldboyedu.com :param name: :param url: :return: """ print(name, url)
6 flask-migrate
# 帮助我们做数据库迁移 # 依赖:flask-script
安装
pip3 install flask-migrate
配置
from flask_script import Manager from flask_migrate import Migrate, MigrateCommand app = create_app() manager = Manager(app) # flask_script Migrate(app, db) # db = SQLAlchemy() manager.add_command('db', MigrateCommand)
使用
python manage.py db init python manage.py db migrate # makemigrations python manage.py db upgrade # migrate
7 pipreqs
# 自动帮到项目使用的所有组件和版本
安装
pip3 install pipreqs
使用
# 项目根目录下使用命令: pipreqs ./ --encoding=utf-8
扩展
一键安装依赖
pip3 install -r requirements.txt
8 虚拟环境
安装 pip3 install virtualenv 创建虚拟环境 virtualenv env1 --no-site-packages (默认就是: --no-site-packages) 进入虚拟环境 activate 退出虚拟环境 deactivate