思路图
下面二话不说还是看代码
manage.py内代码
import os
from flask_migrate import MigrateCommand
from flask_script import Manager
from App import create_app
env = os.environ.get('flask1810') or 'default'
app = create_app(env)
manager = Manager(app)
manager.add_command('db',MigrateCommand)
if __name__ =='__main__':
manager.run()
init.py内代码
import os
from flask import Flask
from App.ext import init_ext
from App.settings import envs
from App.views import init_blue
def create_app(env):
app = Flask(__name__)
#初始化项目
app.config.from_object(envs.get(env))
#初始化插件
init_ext(app)
#初始化路由
init_blue(app)
return app
ext.py内代码
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
migrate = Migrate()#初始化
def init_ext(app):
db.init_app(app)
migrate.init_app(app,db)
models.py内代码
from App.ext import db
class Person(db.Model):
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
p_name = db.Column(db.String(16))
p_age = db.Column(db.Integer,default=18)
配置 文件settings
def get_db_uri(dbinfo):
backend = dbinfo.get('BACKEND')#数据库
driver = dbinfo.get('DRIVER')
host = dbinfo.get('HOST')
port = dbinfo.get('PORT')
user = dbinfo.get('USER')
password = dbinfo.get('PASSWORD')
name = dbinfo.get('NAME')
return '{}+{}://{}:{}@{}:{}/{}'.format(backend, driver, user, password, host, port, name)
# 'mysql+pymysql://用户名称:密码@localhost:端口/数据库名称'
class Config:
DEBUG = False
TESTING =False
SECRET_KEY = 'ASCFASFAFW'
SQLALCHEMY_TRACK_MODIFICATIONS = True
# SQLALCHEMY_COMMIT_TEARDOWN = True
class DevelopConfig(Config):#开发环境
DEBUG = True
dbinfo={
'BACKEND':'mysql',
'DRIVER':'pymysql',
'HOST':'localhost',
'PORT':'3306',
'USER':'root',
'PASSWORD':'123456',
'NAME':'flask1810'
}
SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo)
class TestingConfig(Config):#测试环境
DEBUG = True
dbinfo={
'BACKEND':'mysql',
'DRIVER':'pymysql',
'HOST':'127.0.0.1',
'PORT':'3306',
'USER':'root',
'PASSWORD':'123456',
'NAME':'flask1810'
}
SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo)
class StagingConfig(Config):#演示环境
DEBUG = True
dbinfo={
'BACKEND':'mysql',
'DRIVER':'pymysql',
'HOST':'127.0.0.1',
'PORT':'3306',
'USER':'root',
'PASSWORD':'123456',
'NAME':'flask1810'
}
SQLALCHEMY_DATABASE_URI= get_db_uri(dbinfo)
class ProductConfig(Config):#上线环境
DEBUG = True
dbinfo={
'BACKEND':'mysql',
'DRIVER':'pymysql',
'HOST':'127.0.0.1',
'PORT':'3306',
'USER':'root',
'PASSWORD':'123456',
'NAME':'flask1810'
}
SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo)
envs={
'develop':DevelopConfig,
'testing':TestingConfig,
'staging':StagingConfig,
'product':ProductConfig,
'default':DevelopConfig,
}
视图 views
from flask import Blueprint
from App.models import Person
blue = Blueprint('blue',__name__)
def init_blue(app):
app.register_blueprint(blue)
@blue.route('/')
def index():
return '============'