当前位置:网站首页>Flask-RESTful请求响应与SQLAlchemy基础
Flask-RESTful请求响应与SQLAlchemy基础
2022-08-02 14:01:00 【czy1206527605】
一.flask_restfun处理请求
1.处理的流程
from flask import Flask
from flask_restful import Api, Resource
from flask_restful import reqparse
app = Flask(__name__)
api = Api(app)
class Index(Resource):
def get(self):
parser = reqparse.RequestParser()
parser.add_argument('id')
args = parser.parse_args()
return '参数ID的值为: {}'.format(args['id'])
api.add_resource(Index, '/index')
if __name__ == '__main__':
app.run()
2.思路
1.导入RequestParser类
2.实例化RequestParser对象
3.向RequestParser对象中添加需要检验或转换的参数声明
4.使用parse_args()方法启动检验处理
5.通过args.id或args[‘id’]的方法获取参数
二.序列化数据
1.装饰器形式的序列化
from flask import Flask
from flask_restful import Api, Resource
from flask_restful import fields, marshal_with
app = Flask(__name__)
api = Api(app)
class User(object):
def __init__(self, name, age, password):
self.name = name
self.age = age
self.password = password
resource_fields = {
'name': fields.String,
'age': fields.Integer,
}
class Index(Resource):
@marshal_with(resource_fields, envelope='data')
def get(self, **kwargs):
user = User('Jeremy', 18, '123456')
return user
# 指定路由
api.add_resource(Index, '/index')
if __name__ == '__main__':
app.run()
2.marshal方法直接序列化
from flask import Flask
from flask_restful import Api, Resource
from flask_restful import fields, marshal_with, marshal
app = Flask(__name__)
api = Api(app)
class User(object):
def __init__(self, name, age, password):
self.name = name
self.age = age
self.password = password
resource_fields = {
'name': fields.String,
'age': fields.Integer,
}
class Index(Resource):
def get(self, **kwargs):
user = User('Jeremy', 18, '123456')
return marshal(user, resource_fields)
api.add_resource(Index, '/index')
if __name__ == '__main__':
app.run()
其中 若想要响应返回json数据格式时 应return
{
"msg": "发送成功",
"code": 200,
"data": {
...}
}
一.SQLAlchemy
1.SQLAlchemy数据库的配置
安装Flask-SQLAlchemy
pip install flask-sqlalchemy
from flask import Flask
app = Flask(__name__)
class Config(object):
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:[email protected]:3306/jiyunstus'
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_ECHO = True
app.config.from_object(Config)
2.SQLAlchemy数据库模型类的创建
from flask_sqlalchemy import SQLAlchemy
from app import app
db = SQLAlchemy(app)
class UserModel(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
3.SQLAlchemy数据库迁移文件
from flask_migrate import Migrate, MigrateCommand
from flask_script import Shell, Manager
from models.user_models import db
from app import app
manager = Manager(app)
migrate = Migrate(app, db)
manager.add_command('db', MigrateCommand)
if __name__ == '__main__':
manager.run()
PS:文件迁移的命令
初始化迁移文件
python manage.py db init
生成迁移文件
python manage.py db migrate
执行迁移
python manage.py db upgrade
边栏推荐
猜你喜欢
Mysql's case the when you how to use
logback源码阅读(一)获取ILoggerFactory、Logger
【Tensorflow】AttributeError: ‘_TfDeviceCaptureOp‘ object has no attribute ‘_set_device_from_string‘
软件测试和硬件测试的区别及概念
ZABBIX配置邮件报警和微信报警
logback源码阅读(二)日志打印,自定义appender,encoder,pattern,converter
Linux:CentOS 7 安装MySQL5.7
你接受不了60%的暴跌,就没有资格获得6000%的涨幅 2021-05-27
基于深度学习的图像检索方法!
IDEA打包jar包
随机推荐
史上最全!47个“数字化转型”常见术语合集,看完秒懂~
els 长条碰撞变形判断
Audio processing: floating point data stream to PCM file
Image retrieval method based on deep learning!
FFmpeg 的AVCodecContext结构体详解
方舟生存进化淘宝面板服务器是怎么一回事?
线代:已知一个特征向量快速求另外两个与之正交的特征向量
瑞吉外卖笔记——第05讲Redis入门
OpenMMLab简介
Mysql's case the when you how to use
What is the difference between web testing and app testing?
音频处理:浮点型数据流转PCM文件
打破文件锁限制,以存储力量助力企业增长新动力
How to solve 1045 cannot log in to mysql server
ZABBIX配置邮件报警和微信报警
RKMPP 在FFmpeg上实现硬编解码
IDEA打包jar包
Object detection scene SSD-Mobilenetv1-FPN
RKMPP库快速上手--(一)RKMPP功能及使用详解
Supervision strikes again, what about the market outlook?2021-05-22