当前位置:   article > 正文

flask学习之Flask-Script 通过命令行的方式操作flask_flask-script拓展生成数据库表和启动服务

flask-script拓展生成数据库表和启动服务

flask-script的作用是通过命令行的形式操作flask,例如通过命令跑一个开发版本的服务器,设置数据库,定时任务等等。
我们需要把脚本命令代码放在一个叫做manage.py的文件中,然后在终端运行python manage.py hello命令,就可以看到输出hello了
定义命令的三种方式
添加参数到命令中
flask_sqlalchemy_demo.py代码如下:(主要内容就是定义一个APP的)

from flask import Flask
from flask_sqlalchemy import SQLAlchemy


HOSTNAME = '127.0.0.1'

# 数据库
# 几栋
DATABASE = 'demo'

# 端口
# 门牌号
PORT = 3306

# 用户名和密码
# 钥匙
USERNAME = 'root'
PASSWORD = 'root'

DB_URL = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)


app = Flask(__name__)

# 映射数据库
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URL
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

# 生成基类
db = SQLAlchemy(app)


# 这里可以不用自行创建表格,默认会将类名小写话生成表格
class User(db.Model):
    __tablename__ = 'user'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(50))

    def __repr__(self):
        return 'User(name:%s)' % self.name


class Article(db.Model):
    __tablename__ = 'article'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(50))
    uid = db.Column(db.Integer, db.ForeignKey('user.id'))

    author = db.relationship('User', backref='articles')
    
@app.route('/')
def index():
    return '这是首页'


if __name__ == '__main__':
    app.run(debug=True)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59

操作manage.py显示hello的代码如下:

from flask_script import Manager
from flask_add_admin.flask_sqlalchemy_demo import app

manage = Manager(app)

@manage.command
def index():
    return 'hello python'

# 这里可以设置接收外部参数
@manage.option('-n','--name',dest='name')
@manage.option('-u','--url',dest='url')
def hello(name,url):
    print('hello',name,url)

if __name__ == '__main__':
    manage.run()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

此时在终端运行:

python manage.py hello -n cheney -u lcy
# 显示
# hello cheney lcy

  • 1
  • 2
  • 3
  • 4

前戏完成,进入正活:
将一个大的程序分为多个,包括config.py flask_script_demo.py和manage.py
其中config.py中的内容是配置,flask_script_demo.py的内容是定义类与APP,db等
manage.py是通过命令行运行代码
config.py

# 配置文件
HOSTNAME = '127.0.0.1'
DATABASE = 'class_demo'

# 端口
# 门牌号
PORT = 3306

# 用户名和密码
# 钥匙
USERNAME = 'root'
PASSWORD = 'root'

DB_URL = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)


SQLALCHEMY_DATABASE_URI = DB_URL
SQLALCHEMY_TRACK_MODIFICATIONS = False
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

flask_script_demo.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import config


app = Flask(__name__)
# 加载配置文件方法   注:第一次看了
app.config.from_object(config)

db = SQLAlchemy(app)


class AdminUser(db.Model):
    __tablename__ = 'admin_user'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(50))
    email = db.Column(db.String(50))


#db.drop_all()
db.create_all()


@app.route('/')
def index():
    return '这是首页'


if __name__ == '__main__':
    app.run(debug=True)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

manage.py:

from flask_script import Manager

from flask_script_demo2 import app, AdminUser, db

manage = Manager(app)


@manage.option('-n', '--name', dest='name')
@manage.option('-e', '--email', dest='email')
def add_user(name, email):
    user = AdminUser(name=name, email=email)
    db.session.add(user)
    db.session.commit()


if __name__ == '__main__':
    manage.run()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 此时要执行,需要进入到相应的文件夹内:
  • 此代码的运行方式:先运行flask_script_demo.py 新建好数据表,然后运行manage.py添加数据,如果不运行flask_script_demo程序新建表格,是无法添加数据的

python manage.py add_user -n lcy -e liucy133@163.com`

查看数据表:
可以发现成功添加进入数据

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/72968
推荐阅读
相关标签
  

闽ICP备14008679号