flask 第三方组件

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 

使用:

- 用户登录
- 用户注册
- 从数据库获取数据

钩子函数

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:[email protected]: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

原文地址:https://www.cnblogs.com/sunch/p/10664520.html

时间: 2024-11-06 19:27:50

flask 第三方组件的相关文章

flask强大的第三方组件之falsk-sqlalchemy

定义: flask-sqlalchemy: 是对sqlalchemy进行了封装和扩展,用起来更加的方便. 前不久刚刚认识过了SQLAlchemy,点击这里复习一下 当 Flask 与 SQLAlchemy 发生火花会怎么样呢? Flask-SQLAlchemy就这么诞生了 首先要先安装一下Flask-SQLAlchemy这个模块 pip install Flask-SQLAlchemy 然后你要下载一个干净的Flask项目 点击下载 接下来基于这个Flask项目,我们要加入Flask-SQLAl

第三方组件引用另一个第三方组件的悲剧

首先我先声明,我的摘要是故意这样写的,如果你是因为看了摘要才进来的,请让我大笑三声:哈哈哈~~ 不过既然你已经进来了,不妨继续往下看看~~ 事件背景 话说最近换工作了,刚接手的项目的项目中遇到一个棘手的事情;一个第三方组件中使用了老版的log4net(1.2.10),另一个第三方组件中使用了新版的log4net(1.2.13) 这下问题来了 当我自己的项目中需要同时使用这2个第三方组件的时候,他们各自引用的log4net版本是不一致的 所以,不管我引用的是哪个版本的log4net,最终的效果是另

学习制作iOS程序第一天:建立主目录、源代码管理、Pod安装第三方组件

前言 俗话说,看过的能记住20%,用过的能记住40%,解决过错误的能记住60%,为此加班好几天解决问题的能记住80%.利用自学的iOS知识搭建一个中介查房的软件.学以致用. 一.建立文件目录 打开XCode,新建一个“Single View Application”.保存到桌面新建的目录“randy.company.customerappios”里,本文只考虑iOS7.0及以上,以下的暂不考虑了. 二.连接到git服务器(Bitbucket) 1.进入Bitbucket后台管理,新建一个repo

iOS 项目中用到的一些开源库和第三方组件

iOS 项目中用到的一些 iOS 开源库和第三方组件 分享一下我目前所在公司 iOS 项目中用到的一些 iOS 开源库和第三方组件, 感谢开源, 减少了我们的劳动力, 节约了我们大量的时间, 让我们有更多的时间和精力能更加专注的做好自己的产品 用到的组件 1.通过CocoaPods安装 项目名称 项目信息 AFNetworking 网络请求组件 FMDB 本地数据库组件 SDWebImage 多个缩略图缓存组件 UICKeyChainStore 存放用户账号密码组件 Reachability 监

React Native常用第三方组件汇总--史上最全 之一

把我认为最好的知识,拿来与他人分享,是这一生快事之一! React Native 项目常用第三方组件汇总: react-native-animatable 动画 react-native-carousel 轮播 react-native-countdown 倒计时 react-native-device-info 设备信息 react-native-fileupload 文件上传 react-native-icons 图标 react-native-image-picker 图片选择器 reac

不使用第三方组件,只调用COM,导出EXECL,但只装OFFICE2007,不装2003,直接强制引用动态库的方法

步骤1:强制引用动态库”Microsoft.Office.Interop.Excel“,版本为11.0: 步骤2:添加引用OFFICE2007的COM组件”MicroSoft Office 12.0 Object Library“(OFFICE2003的是MicroSoft Office 11.0 Object Library),添加完成后动态库为”microsoft.office.core“. 不使用第三方组件,只调用COM,导出EXECL,但只装OFFICE2007,不装2003,直接强制引

angular 如何使用第三方组件ng-bootstrap

1.在你的项目中以下指令    npm install --save @ng-bootstrap/ng-bootstrap 安装完成会显示 + @ng-bootstrap/[email protected] added 1 package in 8.757s   2.在AppModule模块中引入这个组件: import {NgbModule} from '@ng-bootstrap/ng-bootstrap'; @NgModule({ declarations: [AppComponent,

Android集成主流优秀第三方组件框架

Android集成主流优秀第三方组件框架 这是一个集成目前Android主流优秀第三方组件.优秀好用的自定义控件.实用工具类封装. 以及一些APP共通模块(比如:版本更新.意见反馈.引导界面等等)的开发包,帮助程序员 快速开发自己的APP 已集成第三方开源组件: 网络请求库android-async-http 图片异步加载库universal-image-loader Sqlite数据库操作ormlite-android 社会化分享ShareSDK+短信验证码 Zxing二维码库 百度地图定位S

第三方组件

第三方组件是针对某种软件在应用功能上的不足或缺陷,而由软件编制方以外的其他组织或个人开发的相关组件.这种组件不是Java官方提供的,也不是由软件使用者编写的组件.使用成熟的第三方组件进行开发会提高开发的效率,减少出错的可能. Apache公司(http://commons.apache.org)针对Java提供了很多的功能强大的组件,除了Apache公司以外,还会有很多的公司.组织和个人会提供一些非常好的组件.这些第三方组件的列表是不可能准确的给出来的.如果需要找第三方组件,可以到一些比较大的社