flask 的简单拆分升级版2

#创建manage.py
from flask_script import Manager from app import create_app app=create_app('developConfig')#调用创建的注册create_app,developConfig给他传一个生产环境,本次选择开发者环境 manage = Manager(app) if __name__ == '__main__': manage.run()

  


#创建__init__.py文件
from
flask import Flask from app import settings from app.ext import init_info from app.views import blue def create_app(environ):#定义一个创建app函数,为其添加一个环境变量参数 app = Flask(__name__)#注册app app.register_blueprint(blueprint=blue)#加载蓝图 app.config.from_object(settings.config_info.get(environ)) #flask扩展包的配置信息 # app.config['SECRET_KEY']='123'#session 的密钥,如果没有用session会报错 # app.config['SESSION_TYPE']='redis'#加载redis存储,还可以理解为redis驱动 # app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///sqlite3.db'#加载sqlite数据库 # app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@localhost:3306/flask1805' # app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config.from_object(settings.config_info.get(environ))#从配置里面开发环境中获取环境加载到新创建的app中 init_info(app) return app # url 统一资源定位符 # uri 统一资源标识符
#创建settings.py文件
# 关于咱们的四个生产环境
# 开发环境    测试环境   演示环境   线上环境
#针对MySQL的数据库配置,可以调用没有写死
def get_database_url(info):
    name = info.get('name') or 'mysql'
    username = info.get('username') or 'root'
    password = info.get('password') or 'youpassword'
    host = info.get('host') or 'localhost'
    port = info.get('port') or '3306'
    driver = info.get('driver') or 'pymysql'
    database = info.get('database') or 'flask3'#换成自己的数据库

    return '{}+{}://{}:{}@{}:{}/{}'.format(name,driver,username,password,host,port,database)

#配置信息类也可以说是线上环境
class Config():
    DEBUG = False#默认调试模式关闭
    TESTING = False#测试模式关闭
    SECRET_KEY = '123'#密钥
    SESSION_TYPE = 'redis'#session存储类型
    SQLALCHEMY_TRACK_MODIFICATIONS = False#报的一个提示不是错,只是一个警告信息,通过这个可以关闭提示,想了解可以注释掉自己看看



#开发环境
class DevelopConfig(Config):

    DEBUG = True
    TESTING = True

    database = {
        'username': 'root',
        'password': 'youpassword',
        'host': 'localhost',
        'port': '3306',
        'database': 'flask3',
        'driver':'pymysql',
        'name' : 'mysql'
    }

    # 链接数据库的url
    SQLALCHEMY_DATABASE_URI = get_database_url(database)

#测试环境
class TestConfig(Config):
    TESTING = True

    database = {
         'username': 'root',
        'password': 'youpassword',
        'host': 'localhost',
        'port': '3306',
        'database': 'flask3',
        'driver':'pymysql',
        'name' : 'mysql'
    }

    SQLALCHEMY_DATABASE_URI = get_database_url(database)

#演示环境
class ShowConfig(Config):

    database = {
        'username': 'root',
        'password': 'youpassword',
        'host': 'localhost',
        'port': '3306',
        'database': 'flask3',
        'driver': 'pymysql',
        'name': 'mysql'
    }

    SQLALCHEMY_DATABASE_URI = get_database_url(database)

#生产环境
class WorkConfig(Config):

    database = {
         'username': 'root',
        'password': 'youpassword',
        'host': 'localhost',
        'port': '3306',
        'database': 'flask3',
        'driver':'pymysql',
        'name' : 'mysql'
    }

    SQLALCHEMY_DATABASE_URI = get_database_url(database)


#封装四个开发环境
config_info = {

    "WorkConfig": WorkConfig,
    "developConfig":DevelopConfig,
    "testConfig": TestConfig,
    "showConfig": ShowConfig,
    "default": DevelopConfig,
}

  

#创建views.py文件
from flask import Blueprint#导入蓝图模块

from app.ext import db
from app.modles import City

blue=Blueprint('first',__name__)#创建蓝图

@blue.route('/')#路由
def hello_world():
    return 'Hello World!'

#创建数据库
@blue.route('/createall/')
def create_all():
    db.create_all()
    return '数据库创建成功'
#添加数据库信息
@blue.route('/addcity/')
def add_city():
    city=City()
    city.c_name='郑州'
    city.c_age= 3500
    db.session.add(city)
    db.session.commit()

    return '数据添加成功'
#删除数据
@blue.route('/dropall/')
def drop_all():
    db.drop_all()
    return '数据删除成功'
#获取所有信息
@blue.route('/getall/')
def get_all():
    city=City.query.all()
    print(city)
    print(type(city))
    return '数据查询成功'

  

#创建modles.py文件
from app.ext import db


class City(db.Model):
    c_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    c_name = db.Column(db.String(32))
    c_age = db.Column(db.Integer)

  

#创建ext.py文件
from flask_session import Session
from flask_sqlalchemy import SQLAlchemy
#第三库都在这加载
sess=Session()#加载session

db=SQLAlchemy()#加载SQLAlchemy

def init_info(app):#定义一个init_info函数,在调用的时候直接调用session
    sess.init_app(app)
    db.init_app(app)#把数据库加载到app

  已测试都能成功

posted @ 2018-12-07 20:21  青春叛逆者  阅读(290)  评论(0编辑  收藏  举报