在一应创建好的项目内
from flask import Flask
from views.user import user_bp #从蓝图文件里导入蓝图对象
# 创建Flask实例
app=Flask(__name__)
app.register_blueprint(user_bp) #注册蓝图
if __name__ == '__main__':
app.run()
存放类的py文件
from flask import Blueprint, jsonify
# url_prefix # 指定当前蓝图下所有路由的前缀
user_bp=Blueprint('user_bp',__name__,url_prefix='/user')
from flask_restful import Api,Resource,reqparse #请求器导包
api=Api(user_bp)
class Users(Resource):
def get(self):
#1.实例化请求器对象
req=reqparse.RequestParser()
# 2.添加想要的数据
# required=True 必填 help提示信息
req.add_argument('a',required=True,help='必填')
# default默认为...
req.add_argument('c',default='000')
#3.校验数据
args=req.parse_args()
print(args)
return 'sss'
api.add_resource(Users,'/users')
req.add_argument(…)方法参数详解。里面还可加格外条件
例如
# 可选参数(部分)
# type=int # 参数类型
# help="不可以为空" # 错误提示 提示内容随意填写
# required=True # True必须填写 Flase不用必须填写
# action="append" # 出现同名参数如何处理,append追加,store 保留第一个
# choices=['男','女'] # 特定的值 只能写其中包含的
# default=18 # 如果不传,默认值
# type: 描述参数应该匹配的类型,可以使用python的标准类型: str或int
location: 描述参数应该在请求数据中出现的位置
# 请求体中
parser.add_argument('name', type=int, location='form')
# 查询参数中
parser.add_argument('PageSize', type=int, location='args')
# 请求头中
parser.add_argument('User-Agent', location='headers')
# cookie中
parser.add_argument('session_id', location='cookies')
# json数据中
parser.add_argument('user_id', location='json')
# 文件上传
parser.add_argument('picture', location='files')
# 指定多处
parser.add_argument('text', location=['headers', 'json'])
先创建数据库的配置项 链接数据库
安装Flask-SQLAlchemy
pip install flask-sqlalchemy
创建一个settings文件夹里创建config.py文件
在里面进行配置
#数据库配置项
class DefaultConfig:
# 数据库类型+数据库操作引擎://用户名:密码@主机名:端口/数据库名
SQLALCHEMY_DATABASE_URI='mysql+pymysql://root:mysql密码@127.0.0.1:3306/数据库名'
SQLALCHEMY_TRACK_MODIFICATIONS = False # 追踪数据的修改信号
SQLALCHEMY_ECHO = True # 是否在控制台打印输出sql语句
创建一个models文件夹里创建model.py文件用来编写模型类
from flask_sqlalchemy import SQLAlchemy #导包
db=SQLAlchemy() #实例化数据库对象
# 创建一个模型类
# 要是一个模型类,必须继承db.Model
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='用户名')
password=db.Column(db.String(64),nullable=False,default='',comment='密码')
sex=db.Column(db.Boolean,nullable=False,default=True,comment='性别 0男,1女')
在实例化flask的py文件里进行加载配置及让flask项目和数据库对象产生关系
from flask import Flask
from views.user import user_bp #从蓝图文件里导入蓝图对象
from views.order import order_bp
from models.model import db #导入实例化后的数据库对象
from settings.config import DefaultConfig
# 创建Flask实例
app=Flask(__name__)
app.register_blueprint(order_bp) #注册蓝图
app.config.from_object(DefaultConfig) # 加载配置
db.init_app(app) #初始化app 让flask项目和数据库对象产生关系
if __name__ == '__main__':
app.run()
在根目录创建一个manage.py文件进行迁移
from flask_script import Manager #Manager类作业是把命令行运行该文件的时候,添加一些命令
from app import app #导入app
from models.model import db #导入实例化后的数据库对象
from flask_migrate import Migrate,MigrateCommand # 导入迁移类和迁移命令类
manage=Manager(app) #实例生成命令行的管理对象
migrate=Migrate(app,db) #生成迁移对象 用于数据迁移
manage.add_command('db',MigrateCommand) #把迁移的命令添加到管理对象上面
# 注意编写好了要启动一下
if __name__ == '__main__':
manage.run() #启动管理者
在python终端运行命令进行迁移
# 初始化迁移文件 # 初始化,只需要初始化一次
python manage.py db init
# 生成迁移文件
python manage.py db migrate
# 执行迁移
python manage.py db upgrade
# 迁移完成
增删改查操作
在order.py蓝图进行编写
增加
from flask import Blueprint
from flask_restful import Api,Resource,marshal,fields
from models.model import UserModel #导入模型类
from models.model import db #导入实例化的数据库对象
order_bp=Blueprint('order_dp',__name__,url_prefix='/order')
api=Api(order_bp)
class OrderView(Resource):
def get(self):
#添加数据
u1=UserModel(
name='张三',
password='123456',
sex=False,
)
u2=UserModel(
name='张四',
password='123456',
sex=True,
)
# db.session.add(u1) #添加一条数据
db.session.add_all([u1,u2]) #添加多条
#注意: 增加数据, 修改数据及删除数据均需要提交事务
db.session.commit()
return 'order_dp'
api.add_resource(OrderView,'/order')
查看数据
class OrderView(Resource):
def get(self):
#查看全部数据
query_get=UserModel.query.all()
print(query_get)
#查看一条数据
#query_get = UserModel.query.first()
# ## 根据查询条件,查看数据
# query_get=UserModel.query.filter_by(name='张三').first()
return marshal(query_get,{
'name':fields.String,
'password':fields.String,
'sex':fields.Integer
})
修改数据
注意: 增加数据, 修改数据及删除数据均需要提交事务
class OrderView(Resource):
def get(self):
#修改数据
UserModel.query.filter_by(name='张三').update({
'sex':True #要修改的内容
})
#注意: 增加数据, 修改数据及删除数据均需要提交事务
db.session.commit()
删除数据
注意: 增加数据, 修改数据及删除数据均需要提交事务
class OrderView(Resource):
def get(self):
#删除数据 #删除名字是张三的数据
UserModel.query.filter_by(name='张三').delete()
db.session.commit()
Integer一个整数()
String (size)有长度限制的字符串() #记得要在括号里加限制长度
Text一些较长的 unicode 文本()
DateTime表示为 Python datetime 对象的 时间和日期(****)
Float存储浮点值
Boolean存储布尔值
PickleType存储为一个持久化的 Python 对象
LargeBinary存储一个任意大的二进制数据