在init.py中python
from flask import Flask
my_app=Flask(__name__)
def create_app():
return my_app
在manager.py中mysql
import app
if __name__=="__main__":
my_app=app.create_app()
my_app.run()
結果:這樣運行manager.py腳本就至關於運行了整個appsql
在acc.py中數據庫
from flask import Blueprint
acc=Blueprint("acc",__name__)
在user.py中json
from flask import Blueprint
user=Blueprint("user",__name__)
@user.route("/user")
def user_func():
return "user的藍圖頁面"
在init.py中註冊這兩個藍圖flask
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中分別建立兩個藍圖做爲項目的兩個應用session
最終以上操做獲得了一個乾淨的含有藍圖的flask項目目錄結構(flask官方建議)app
在init.py中ui
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中spa
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)
#此處涉及離線腳本
在user藍圖中
from flask import Blueprint,jsonify
user=Blueprint("user",__name__)
from app import db
from app.model import User
###########向User表中添加數據###########
注:使用以前先下載Flask-Script包
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
import app
from flask_script import Manager
my_app=app.create_app()
manager=Manager(my_app)
#############################################
注: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文件夾