赞
踩
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)
操作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()
此时在终端运行:
python manage.py hello -n cheney -u lcy
# 显示
# hello cheney lcy
前戏完成,进入正活:
将一个大的程序分为多个,包括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
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)
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()
python manage.py add_user -n lcy -e liucy133@163.com`
查看数据表:
可以发现成功添加进入数据
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。