| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> RESTful进阶和ORM -> 正文阅读 |
|
[Python知识库]RESTful进阶和ORM |
一、RESTful进阶1、验证请求数据Flask-RESTful 框架 为我们定义好了一个 reqparse模块,用来 对传入来的数据进行验证。 # 1、创建一个请求解析对象 ? ? ? parser = reqparse.RequestParser() ? ? ? # 2、添加要验证的字段 ? ? ? parser.add_argument("name", type=str, location="args") ? ? ? parser.add_argument("age", type=int, location="args") ? ? ? # 3、验证 传入的数据 是否和 要验证的字段 类型 一致 并返回结果 ? ? ? data = parser.parse_args()
request可以如何获取数据 location就可以有多少值 - 获取?后参数 ? args ? ? - 获取form表单数据 ? form ? ? - 获取json数据 json ? ? - 获取请求头数据 ? headers ? ? - 获取cookie ? ? cookies ? - 获取文件 ? files
{ ? "message": { ? ? ? "session_id": "Missing required parameter in the request's cookies" ? } }
如果请求 参数 有多个,有两种处理方式 一种 是 store 表示 只保留第一个 第二个不要 默认就是这种 第二种 是 append 追加,把多个 放如列表中,都要 parse = reqparse.RequestParser() parse.add_argument("username", location="form", action="append")
使用help 可以添加 自定义错误提示 parse.add_argument('session_id', location='cookies', required=True, help="cookie找不到") 2、返回响应结果我们也可以 格式化响应的内容,就是 对响应内容 做序列化
marshal方法提供了基本的参数 marshal(data, ser_fields, envelope="data") 参数1: 要序列化的所有数据 data可以是字典类型 也可以是一个 实例对象 参数2:定义哪些字段参与序列化,一级要把对应字段转成什么类型 参数3:要不要使用一个key来包裹我们的返回内容 ser_fields = { ? ? ? ? ? "username": fields.String, ? ? ? ? ? "password": fields.String, ? ? ? ? ? "age": fields.Integer } { ? "data": { ? ? ? "username": "刘备", ? ? ? "password": "123", ? ? ? "age": 55 ? } }
我们也可以使用装饰器 marshal_with 来对返回的对象 进行 序列化输出 ser_fields = { ? "name": fields.String, ? "price": fields.Integer } ? class Book: ? def __init__(self, name, price, author): ? ? ? self.name = name ? ? ? self.price = price ? ? ? self.author = author ? ? class HelloResource(Resource): ? ? @marshal_with(ser_fields, envelope='data') ? def get(self): ? ? ? ? ? book = Book("python开发", 88, "凡老师") ? ? ? ? return book ? 二、ORMORM(Object Relational Mapping) 对象关系映射 我们使用ORM就可以 操作对象的形式 操作 表 1、ORM介绍ORM又称"对象关系映射", 即Object Relation Mapping. 那到底什么是"对象关系映射" Django框架中: ? 模型类 <---> 表 ? 属性 ? <---> 字段 ? 对象 <---> 记录 ? ? ORM优势与缺点 ? # 优势: ? ? ? (2).省去自己拼写SQL,保证SQL语法的正确性 ? ? ? (3).一次编写可以适配多个数据库 ? ? ? (4).防止注入攻击 ? ? ? (5).在数据库表名或字段名发生变化时,只需修改模型类的映射,无需修改数据库操作的代码(相比SQL的话,可能需要同步修改涉及到的每一个SQL语句) ? # 缺点: ? ? ? 执行效率低下 2、 扩展1: 声明如果我们需要List 这周列表 或者 字典 {} 应该怎么做 ser_fields = { ? "username": fields.List, ? "password": fields.String } 2、Flask-SQLAlchemy
pip install flask-sqlalchemy 我们一般都是连接的mysql,所以你要确保已经安装了 mysql的python驱动
我们先通过交互的形式,把Model类 映射到数据表 (tengfei) E:\workspace2021\2103\Pro02_orm>python ? >>>db.create_all() ? 执行完这个脚本 会发现 数据库中会多Model类对应的表 3、添加数据要使用db对象,然后session会话 add方法 添加 实例 db.session.add(Book("2221","hello")) db.session.add(Book("2222","goods")) 可以连续添加多个 现在 是没有真正的添加到数据库 还在会话中,需要提交 db.session.commit() 4、查询数据查询操作是
books = Book.query.all()
Book.query.filter_by(name='hello').first() |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 23:03:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |