创建news,根目录下创建settings文件 --- config.py文件,编写配置项,配置项必须大写
class DeFaultConfig:
SECRET_KEY = '*******'
SQLALCHEMY_DATABASE_URI = ''
SQLALCHEMY_TRACK_MODIFICATIONS = False # 追踪数据的修改信号
SQLALCHEMY_ECHO = True # 是否在控制台打印输出sql语句
JSON_AS_ASCII = False
class DevConfig(DeFaultConfig):
# 数据库类型+数据库操作引擎://用户名:密码@主机名:端口/数据库名
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:[email protected]:3306/xxxxx'
根目录下创建views 文件--- users.py文件
from flask import Blueprint
from flask_restful import Api,Resource
user_bp = Blueprint('user_bp',__name__,url_prefix='/users')
api = Api(user_bp) #实例化路由收集器
from models.model import UserModel,Stu,Sub
from flask_restful import marshal,fields
#创建类视图
class UserView(Resource):
def get(self):
pass
api.add_resource(UserView,'/user') #添加路由 完整地址/users/user
app.py
from create_app import create_app
from settings.config import DevConfig
app = create_app(DevConfig)
if __name__ == '__main__':
app.run()
create_app.py
from flask import Flask
from views.users import user_bp
from models.model import db
def create_app(config):
flask_app = Flask(__name__)
flask_app.config.from_object(config) #加载配置项
flask_app.register_blueprint(user_bp) #注册蓝图
db.init_app(flask_app) # 绑定db
return flask_app
根目录下创建models 文件--- model.py文件
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy() #实例化数据库连接对象
#创建模型如下
class UserModel(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment='ID')
name = db.Column(db.String(32), nullable=False, default='', comment='用户名')
age = db.Column(db.Integer,default=0,comment='年龄')
balance = db.Column(db.DECIMAL(10,2),comment='资产')
manage.py
from flask_script import Manager
from flask_migrate import MigrateCommand,Migrate
from app import app
from models.model import db
manage = Manager(app) #实例化命令行管理对象
migrate = Migrate(app,db) #实例化迁移执行类
manage.add_command('db',MigrateCommand) #给命令行管理对象添加一组命令
if __name__ == '__main__':
manage.run()
编写模型后,执行迁移命令
# python manage.py db init # 初始化,只需要初始化一次 # python manage.py db migrate # 生成迁移文件 # python manage.py db upgrade