使用Flask框架的整体流程
自己使用的一些整理,若有纰漏,敬请指出。
Flask框架
需要的模块 flask 里的 Flask
1.主程序(run)
首先实例化对象 app = Flask(name)
app.config[‘SECRET_KEY’] = random._urandom(24) # 生成一个密钥
2. 建立路由联系、 写视图函数(views)
@app.route(’\xxxx’)
def index():
if/else/… # 判断
get mysql values # 获取数据库中数据
return render_template(’.html’(,values)) # 渲染模版 及传入参数
(return rediect(url_for(views))) # 重定向另一视图函数
3. 获取用户上传数据
需要导入模块 from flask import requests
@app.route(’/todo/add/’, methods=[‘POST’,‘GET’])
保密使用POST GET会在url上显示用户数据
- 数据库操作(models)
导入flask数据模块 from flask-sqlalchemy import SQLALchemy
数据库链接
app.config[‘SQLALCHEMY_DATABASE_URI’] = ‘mysql+pymysql://root:westos@localhost/Todo’
‘mysql+pymysql://用户:密码@哪里操作/数据库名称’
建立数据库表
db.Column函数指定了数据库中字段的类型
db.Integer 整型 db.String(50) 字符型 db.DateTime 时间型
autoincrement=True 自动累计 primary_key=True 主关键字 unique=True 唯一 nullable=False 是否为空
db.ForeignKey(‘department.id’) 外键 用于获取另外一个表的值 即部门在用户处记录为1 在部门表中1代表xx部 可以减少用户存储的数据量 (1个数字与若干个汉字)
db.relationship(‘User’,backref=‘department’) 反向链接 返回与’User’类 相关联的用户组成的列表
class User(db.Model):
id = db.Column(db.Integer,autoincrement=True,primary_key=True)
db.create_all() # 创建所有表
db.drop_all() # 删除所有表
添加数据
u1 = User(name='westos1',pwd='westos',department_id=1) # 实例化
db.session.add(u1) # 添加
db.session.commit() # 提交
name = db.Column(db.String(50),unique=True,nullable=False)
5. 管理数据库(manage)
需要flask-migrate 及 flask-script 模块
from flask_migrate import Migrate, MigrateCommand
from flask_script import Shell, Manager
分别实例化
manager = Manager(app) # 支持启动应用程序的命令行
migrate = Migrate(app,db) # 支持数据库迁移
添加一条数据库迁移管理命令
manager.add_command('db',MigrateCommand)
添加一条命令,可以显示所有的用户
@manager.command
def showUser():
"""显示所有的用户"""
users = User.query.all()
print(users[:5])
if __name__ == '__main__':
manager.run()
完成manage数据库之后,进入命令行
本机的话,启动进入虚拟环境
使用命令运行manage程序 python manage
查看可使用的命令
对于记录数据库版本的步骤
没有创建数据库时
python manage db init # 选择数据库进行初始化
python manage migrate -m “注释”
python manage upgrade