flask 项目框架:
init 内注册 + 初始化
manage :
启动文件:
from flask import Flask
from flask_script import Manager
from App import create_app
from flask_migrate import MigrateCommand
app = create_app()
manager = Manager(app=app)
manager.add_command('db',MigrateCommand)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
manager.run()
App/init:
from flask import Flask
# 初始化 app
from App.ext import init_ext
from App.settings import envs
from App.views import init_first_blue
def create_app():
app = Flask(__name__)
# 初始化指定的配置文件
app.config.from_object(envs.get('develop'))
# 初始化蓝图
init_first_blue(app)
# 注册扩展库
init_ext(app)
return app
App/ext:
# 拓展模块
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
db = SQLAlchemy()
'''
数据更新 (迁移操作)
pip install flask-migrate'''
migrate = Migrate()
def init_ext(app):
# 扩展模块
db.init_app(app)
migrate.init_app(app,db=db)
pass
App/models:
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)
---> python manage.py db init
--> python manage.py migrate
--> python manage.py upgrate
-->python manage.py runserver -r -d
(在试图曾调用--》 表)
App/setting:
选择环境
def get_db_uri(dbinfo):
ENGINE = dbinfo.get('ENGINE') or 'mysql'
DRIVER = dbinfo.get('DRIVER') or 'pymysql'
USER = dbinfo.get('USER') or 'root'
PASSWORD = dbinfo.get('PASSWORD') or '123.com'
HOST = dbinfo.get('HOST') or 'localhost'
PORT = dbinfo.get('PORT') or '3306'
DB = dbinfo.get('DB') or 'develop'
return "{}+{}://{}:{}@{}:{}/{}".format(ENGINE,DRIVER,USER,PASSWORD,HOST,PORT,DB)
# 环境初始化
class Config:
DEBUG = False
TESTING = False
SECRET_KEY = 'Rock'
SQLALCHEMY_TRACK_MOOIFICATIONS = False
# 每一个环境
class DevelopConfig(Config):
DEBUG = True
DATABASE ={
'ENGINE': 'mysql',
'DRIVER': 'pymysql',
'USER': 'root',
'PASSWORD':'123.com',
'HOST': 'localhost',
'PORT': '3306',
'DB': 'test'
}
SQLALCHEMY_DATABASE_URL = get_db_uri(DATABASE)
# 测试环境
class TestingConfig(Config):
TESTING = True
DATABASE = {
'ENGINE': 'mysql',
'DRIVER': 'pymysql',
'USER': 'root',
'PASSWORD': '123.com',
'HOST': 'localhost',
'PORT': '3306',
'DB': 'test'
}
SQLALCHEMY_DATABASE_URL = get_db_uri(DATABASE)
# 每一个环境
class StagingConfig(Config):
DATABASE = {
'ENGINE': 'mysql',
'DRIVER': 'pymysql',
'USER': 'root',
'PASSWORD': '123.com',
'HOST': 'localhost',
'PORT': '3306',
'DB': 'test'
}
SQLALCHEMY_DATABASE_URL = get_db_uri(DATABASE)
# 每一个环境
class ProductConfig(Config):
DATABASE = {
'ENGINE': 'mysql',
'DRIVER': 'pymysql',
'USER': 'root',
'PASSWORD': '123.com',
'HOST': 'localhost',
'PORT': '3306',
'DB': 'test'
}
SQLALCHEMY_DATABASE_URL = get_db_uri(DATABASE)
envs = {
'develop':DevelopConfig,
'testing': TestingConfig,
'staging': StagingConfig,
'product': ProductConfig,
'default': DevelopConfig
}
App/views:
import random
from flask import Blueprint
from App.ext import db
from App.models import Person
blue = Blueprint('first_blue',__name__)
def init_first_blue(app):
# 注册化蓝图
app.register_blueprint(blueprint=blue)
@blue.route('/')
def index():
return 'hello world'
@blue.route('/index')
def add_person():
person = Person()
person.p_name = '你喜欢的%d'% random.randrange(100)
person.p_age = random.randrange(100)
db.session.add(person)
db.session.commit()
return 'Add success'
拓展:
py 脚本 --》 py 包 (confact )