Flask---flask-script、flask-sqlalchemy、flask_migrate、多app应用

2024-08-31 22:18

本文主要是介绍Flask---flask-script、flask-sqlalchemy、flask_migrate、多app应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      • flask-script使用
      • flask_sqlalchemy使用
      • flask_migrate使用
      • 多app应用

这里写图片描述

flask-script使用

1、入口文件manage.py
manage.py

from s8day130_pro import create_app
from flask_script import Manager
from flask_script import Command
from flask_script import Manager, Serverapp = create_app()
manager = Manager(app)# 自定义命令二:
@manager.command
def custom(arg):"""自定义命令python manage.py custom 123"""print(arg)# 自定义命令三:
@manager.option('-n', '--name', dest='name')
@manager.option('-u', '--url', dest='url')
def cmd(name, url):"""python manage.py cmd -n safly -u 'baidu.com'python manage.py cmd -name safly -url 'baidu.com'"""print(name, url)# 自定义命令一:
class Hello(Command):"""自定义命令python manage.py hello"""def run(self):print('hello world')manager.add_command('hello', Hello())# 启动项目python manage.py runserverif __name__ == '__main__':# app.run()manager.run()

flask_sqlalchemy使用

2、__init__.py文件

作用:将SQLAlchemy相关的所有功能都封装到db=flask_sqlalchemy.SQLAlchemy()对象中

from flask import Flask
from flask_sqlalchemy import SQLAlchemy# 包含了SQLAlchemy相关的所有操作
db = SQLAlchemy()def create_app():app = Flask(__name__)app.config.from_object('settings.DevelopmentConfig')from .views.account import acapp.register_blueprint(ac)db.init_app(app)return app

3、settings.py配置文件

class BaseConfig(object):# SESSION_TYPE = 'redis'  # session类型为redis# SESSION_KEY_PREFIX = 'session:'  # 保存到session中的值的前缀# SESSION_PERMANENT = True  # 如果设置为False,则关闭浏览器session就失效。# SESSION_USE_SIGNER = False  # 是否对发送到浏览器上 session:cookie值进行加密SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:root@127.0.0.1:3306/test?charset=utf8"SQLALCHEMY_POOL_SIZE = 5SQLALCHEMY_POOL_TIMEOUT = 30SQLALCHEMY_POOL_RECYCLE = -1# 追踪对象的修改并且发送信号SQLALCHEMY_TRACK_MODIFICATIONS = Falseclass ProductionConfig(BaseConfig):passclass DevelopmentConfig(BaseConfig):passclass TestingConfig(BaseConfig):pass

4、Blueprint文件

from flask import blueprints
from s8day130_pro import models
from s8day130_pro import db
ac = blueprints.Blueprint('ac',__name__)@ac.route('/login',methods=['GET','POST'])
def login():data = db.session.query(models.Users).all()print(data)db.session.remove()return 'Login'

5、编写离线脚本文件

drop_table.py

"""
Web运行时,flask程序运行起来,用户通过浏览器访问
离线脚本,自定义的一个py文件+使用flask中定义好的功能
"""from s8day130_pro import db
from s8day130_pro import create_app
from s8day130_pro import modelsapp = create_app()
#从栈拿app
with app.app_context():# db.drop_all()db.create_all()data = db.session.query(models.Users).all()print(data)

6、models.py类

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, UniqueConstraint, Index,DateTime,ForeignKey
from s8day130_pro import db

class Users(db.Model):__tablename__ = 'users'id = Column(Integer, primary_key=True,autoincrement=True)name = Column(String(32),nullable=False,unique=True)

直接运行离线脚本drop_table.py生成users
然后通过python manage.py runserver启动项目即可

flask_migrate使用

作用:做数据库迁移
依赖:
flask-script
flask-sqlalchemy

from flask_migrate import Migrate,MigrateCommand
from s8day130_pro import create_app,dbMigrate(app,db)
manager.add_command('db', MigrateCommand)

数据库迁移命名

    python manage.py db initpython manage.py db migrate # makemigrationspython manage.py db upgrade # migrate

多app应用

from flask import Flask
from werkzeug.wsgi import DispatcherMiddleware
from werkzeug.serving import run_simpleapp01 = Flask('app01')
app02 = Flask('app02')@app01.route('/login')
def login():return 'app01.login'@app02.route('/index')
def index():return 'app02.index'dm = DispatcherMiddleware(app01, {'/app02': app02,
})if __name__ == '__main__':run_simple('localhost', 5000, dm)

http://localhost:5000/app02/index
http://localhost:5000/login

这篇关于Flask---flask-script、flask-sqlalchemy、flask_migrate、多app应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125145

相关文章

Redis中Stream详解及应用小结

《Redis中Stream详解及应用小结》RedisStreams是Redis5.0引入的新功能,提供了一种类似于传统消息队列的机制,但具有更高的灵活性和可扩展性,本文给大家介绍Redis中Strea... 目录1. Redis Stream 概述2. Redis Stream 的基本操作2.1. XADD

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”