首页 > 其他分享 >【12.0】Flask框架之flask-script

【12.0】Flask框架之flask-script

时间:2023-08-26 22:04:12浏览次数:35  
标签:__ manage name 命令 Flask py flask manager 12.0

【一】Django中的命令

【1】引入

  • django中,有命令
    • python manage.py runserver
      • 这个命令用于启动Django开发服务器,让我们能够在本地运行我们的应用程序。
      • 它会默认在本地的8000端口上启动服务器,我们可以在浏览器中访问 http://localhost:8000 来查看应用程序。
    • python manage.py makemigrations
      • 这个命令用于生成数据库迁移文件,当我们修改了模型(Models)的结构时,需要运行这个命令来更新数据库。
      • 它会根据模型的改动生成相应的迁移文件,我们稍后可以通过运行 python manage.py migrate 来应用这些迁移,使数据库保持与模型同步。
  • 自定制命令(django如何自定制命令)
    • python manage.py init_db excel文件路径 指定表名

【2】自定义自己的命令

  • 除了这些内置的命令,我们还可以自定义自己的命令来满足项目的特殊需求。
  • 下面是一个自定义命令的示例演示如何初始化数据库表格:
# myapp/management/commands/init_db.py

from django.core.management.base import BaseCommand
from myapp.models import MyModel
import pandas as pd


class Command(BaseCommand):
    help = 'Initialize database table from excel file'

    def add_arguments(self, parser):
        parser.add_argument('file_path', type=str, help='Path to the excel file')
        parser.add_argument('table_name', type=str, help='Name of the table')

    def handle(self, *args, **options):
        file_path = options['file_path']
        table_name = options['table_name']

        # 读取Excel文件
        data = pd.read_excel(file_path)
        
        # 将数据导入数据库表格
        for index, row in data.iterrows():
            MyModel.objects.create(name=row['name'], age=row['age'], table=table_name)
  • 在上面的示例中,我们创建了一个名为init_db的命令,它接受两个参数:excel文件路径指定表名

    • handle方法中,我们首先使用pandas库读取Excel文件的数据,然后将数据逐行导入到名为MyModel的模型对应的数据库表格中。
  • 要使用自定义命令,我们需要确保将命令所在的应用程序添加到项目的INSTALLED_APPS设置中,并确保命令文件位于应用程序的management/commands目录下。

  • 使用该自定义命令的示例命令行执行方式为:

python manage.py init_db path/to/excel/file.xlsx tablename
  • 其中path/to/excel/file.xlsx是Excel文件的路径,tablename是要导入数据的表名。

  • 这样,我们就可以通过自定义命令来根据特定的需求扩展Django的功能,并实现更多定制化的操作。

【二】flask命令启动

【1】引入

  • flask启动项目,像djagno一样,通过命令启动
pip install Flask==2.2.2
pip install Flask_Script==2.0.3

【2】借助于:flask-script 实现

【1】安装

pip3.8 install flask-script

【2】修改代码

from flask_script import Manager
manager=Manager(app)
manager.run()

【3】用命令启动

(1)常规命令启动

python manage.py runserver

(2)自定制命令

  • 简单自定制命令
@manager.command
def custom(arg):
    # 命令的代码,比如:初始化数据库, 有个excel表格,使用命令导入到mysql中
    print(arg)
  • 复杂一些的自定制命令
@manager.option('-n', '--name', dest='name')
@manager.option('-u', '--url', dest='url')
def cmd(name, url):
    print(name, url)

【三】命令启动演示

【1】主程序代码

  • manage.py
from flask import Flask, render_template
from flask_script import Manager

app = Flask(__name__, template_folder='templates')
app.debug = True
manager = Manager(app)


@app.route('/', methods=['GET', 'POST'])
def index():
    return render_template('index.html')


if __name__ == '__main__':
    manager.run()
  • templates/index.html
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h1>index页面</h1>
    </body>
</html>

【2】简单启动命令

  • 在当前manage.py的文件路径下
python manage.py runserver

【3】自定制简单启动命令

from flask import Flask, render_template
from flask_script import Manager

app = Flask(__name__, template_folder='templates')
app.debug = True
manager = Manager(app)


@app.route('/', methods=['GET', 'POST'])
def index():
    return render_template('index.html')


@manager.command
def custom(arg):
    # 命令的代码,比如:初始化数据库, 有个excel表格,使用命令导入到mysql中
    print(arg)


if __name__ == '__main__':
    manager.run()
  • 启动命令
python manage.py custom dream
PS E:flask_project\day006> python manage.py custom dream
dream
  • 启动命令会自动执行当前函数

【4】自定制复杂启动命令

from flask import Flask, render_template
from flask_script import Manager

app = Flask(__name__, template_folder='templates')
app.debug = True
manager = Manager(app)

@app.route('/', methods=['GET', 'POST'])
def index():
    return render_template('index.html')

@manager.command
def custom(arg):
    # 命令的代码,比如:初始化数据库, 有个excel表格,使用命令导入到mysql中
    print(arg)

@manager.option('-n', '--name', dest='name')
@manager.option('-u', '--url', dest='url')
def cmd(name, url):
    # python manage.py cmd -n mysql -u run
    # python manage.py cmd --name mysql --url run
    print(name, url)


if __name__ == '__main__':
    manager.run()
  • 启动命令
python manage.py cmd -n mysql -u run
python manage.py cmd --name mysql --url run
PS E:flask_project\day006> python manage.py cmd -n mysql -u run
mysql run

标签:__,manage,name,命令,Flask,py,flask,manager,12.0
From: https://www.cnblogs.com/dream-ze/p/17659513.html

相关文章

  • 【11.0】Flask框架之信号
    【一】引入Flask框架中的信号基于blinker,其主要就是让开发者可是在flask请求过程中定制一些用户行为【二】安装【1】安装pip3installblinker【2】内置信号request_started=_signals.signal('request-started')#请求到来前执行request_finished=_......
  • 【13.0】sqlalchemy 集成到Flask框架
    【在Flask中集成SQLAlchemy】在Flask中集成SQLAlchemy可以通过使用第三方扩展包flask-sqlalchemy来实现,以下是详细的步骤和说明:首先,需要导入SQLAlchemy类以及flask_sqlalchemy模块:fromflask_sqlalchemyimportSQLAlchemy实例化SQLAlchemy对象:db=SQLAlchemy()这个......
  • 【1.0】flask框架之初识
    【一】Flask框架引入【1】Python界的web框架(1)Django:Django是一个高级的PythonWeb框架,它注重快速开发和代码复用。它提供了许多内置功能和模块,包括ORM(对象关系映射),表单处理,用户认证,会话管理等。Django采用了MTV(模型-模板-视图)的设计模式,使得开发人员可以更加专注于业务逻辑......
  • 【3.0】flask之路由系统
    【一】路由系统基于装饰器fromflaskimportFlaskapp=Flask(__name__)#(1)flask的路由系统基于装饰器#rule:路径#methods:请求方式【列表】#endpoint:别名#@app.route('/detail/<int:nid>',methods=['GET'],endpoint='detail')@app.route('......
  • 【2.0】flask框架之配置文件
    【一】引入django有settings配置文件所有web框架都会有配置文件-配置文件的形式可能不太一样【二】flask的配置文件【1】配置方式一(简单配置)importuuidfromflaskimportFlaskapp=Flask(__name__)#配置方式一:只能配置debug和secret_keyapp.debug=True......
  • 【4.0】Flask框架之CBV
    【一】基本使用fromflaskimportFlask,render_template#template_folder默认就是当前文件夹下的templates可以不写app=Flask(__name__,template_folder='templates')#FBV:基于函数的视图@app.route('/index',methods=['GET'])defindex():return......
  • Python Web:Django、Flask和FastAPI框架对比
    Django、Flask和FastAPI是PythonWeb框架中的三个主要代表。这些框架都有着各自的优点和缺点,适合不同类型和规模的应用程序。Django:Django是一个全功能的Web框架,它提供了很多内置的应用程序和工具,使得开发Web应用程序更加容易。Django采用了MTV(模型-模板-视图)设计模式,提供ORM......
  • Python-Flask配置https证书
    零、问题错误:SSLVersion2and3ProtocolDetection一、说明1、通过使用flask框架配置https证书进行HTTPs证书配置后会被扫描到漏洞,漏洞描述如下:远程服务接受使用SSL2.0和/或SSL3.0加密的连接。这些版本的SSL受到多个加密缺陷的影响,包括:-带CBCCiphers的不安全的填充方案。......
  • python-flask小结
    1.flask和django区别1.flask是一个轻量级的,django是一个重量级的,包含了很多组件,包括admin,orm等,flask虽然没有但可以引入第三方组件。2.flask是基于上下文管理做的一个应用上下文appcontext和请求上下文requestcontext管理。django只是通过参数传递。2.flask生命周期......
  • flask接收json,开启服务demo
    demofromflaskimportFlask,render_template,request,jsonifyapp=Flask(__name__)@app.route('/',methods=['GET','POST'])defindex():processed_data=Noneifrequest.method=='POST':try......