flask相关使用
在init.py中
from flask import Flask
my_app=Flask(__name__)
def create_app():
return my_app
在manager.py中
import app
if __name__=="__main__":
my_app=app.create_app()
my_app.run()
结果:这样运行manager.py脚本就相当于运行了整个app
在acc.py中
from flask import Blueprint
acc=Blueprint("acc",__name__)
在user.py中
from flask import Blueprint
user=Blueprint("user",__name__)
@user.route("/user")
def user_func():
return "user的蓝图页面"
在init.py中注册这两个蓝图
from flask import Flask
my_app=Flask(__name__)
from app.views.acc import acc
from app.views.user import user
def create_app():
###########注册蓝图############
my_app.register_blueprint(acc)
my_app.register_blueprint(user)
##############################
return my_app
结果:在acc.py和user.py中分别创建两个蓝图作为项目的两个应用
最终以上操作得到了一个干净的含有蓝图的flask项目目录结构(flask官方建议)
二.Flask-SQLAlchemy的使用
1.Flask-SQLAlchemy的导入,配置,以及数据表的创建
在init.py中
from flask import Flask
################1.导入SQLAlchemy,并实例化#################
from flask_sqlalchemy import SQLAlchemy
db=SQLAlchemy()
#########################################################
my_app=Flask(__name__)
from app.views.acc import acc
from app.views.user import user
def create_app():
#####################数据库配置#########################
my_app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:@127.0.0.1:3306/day127?charset=utf8"
# SQLALCHEMY_POOL_SIZE 配置 SQLAlchemy 的连接池大小
my_app.config["SQLALCHEMY_POOL_SIZE"] = 5
# SQLALCHEMY_POOL_TIMEOUT 配置 SQLAlchemy 的连接超时时间
my_app.config["SQLALCHEMY_POOL_TIMEOUT"] = 15
my_app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
###3.此时的SQLAlchemy与flask没有关系,初始化之后才能绑定关系########
db.init_app(my_app)
#########################################################
#注册项目中的蓝图
my_app.register_blueprint(acc)
my_app.register_blueprint(user)
return my_app
在model.py中
from app import db,create_app
#1.创建表关系类
# Base=db.Model #相当于Django中的Model
class User(db.Model):
__tablename__='user'
id=db.Column(db.Integer,primary_key=True)
name=db.Column(db.String(32),index=True)
if __name__ == '__main__':
#2.获取数据库配置
my_app=create_app()
#db.drop_all(app=my_app) #清空继承db.Model的所有数据表
#3.创建my_app中所有关系表
db.create_all(app=my_app)
#此处涉及离线脚本
2.Flask-SQLAlchemy的增删改查
在user蓝图中
from flask import Blueprint,jsonify
user=Blueprint("user",__name__)
from app import db
from app.model import User
###########向User表中添加数据###########
3.Flask-Script的使用
注:使用之前先下载Flask-Script包
(1)在终端运行启动项目
import app
from flask_script import Manager
my_app=app.create_app()
manager=Manager(my_app)
if __name__=="__main__":
manager.run()
在终端中(项目目录下)运行:python manager.py runserver即可启动项目
指定IP和端口启动:python manager.py runserver -h 0.0.0.0 -p 9527
(2)Flask-Script的其他功能
import app
from flask_script import Manager
my_app=app.create_app()
manager=Manager(my_app)
#############################################
4.Flask-Migrate(数据库迁移)
注:Flask-Migrate一定要基于Flask-Script使用
import app
from flask_script import Manager
from flask_migrate import Migrate,MigrateCommand
from app import db
##############################
my_app=app.create_app()
manager=Manager(my_app)
Migrate(my_app,db)
manager.add_command("database",MigrateCommand)
##############################
终端运行:
python manager.py database init
python manager.py database migrate #相当于Django中的makemigration
python manager.py database upgrade #相当于Django中的migrate
python manager.py database init 结果:项目中出现一个migrations文件夹
改变世界,改变自己!