该文原创为新潮质量保障技术团队中的 “上进的中年软件测试从业者”,用于技术交流分享
上期的最后忘了写这一期要写什么内容了。那么我们这期就简单介绍一下 MongoEngine。
主要会从以下几方面介绍:
•MongoDB 的特性
•MongoEngine 的特性
•MongoEngine 与 flask_admin 的完美结合
•非关系型数据库
•支持存储复杂的数据结构
•支持存储二进制数据
关系型数据库
非关系型是相对于关系型的数据库而言,如 mysql、Oracle 等。非关系型带来的好处就是便利,从 MongoDB 的使用上来说就能说明这一点,不需要提前准备数据库,数据库和表(collection)完全可以通过程序去自动创建。
支持存储复杂的数据结构
这一点对于移动互联网行业非常有用,接口之间的数据调用和返回,可以便捷的保存所有返回的 json 数据。
支持存储二进制数据
对象被序列化为二进制的数据后,可以方便的进行数据传输,以及数据的分布存储。
说到 MongoEngine, 这里必须要引入 PyMongo 进行比较。网上对于 MongoEngine 的描述定义为:是一个对象文档映射器(ORM),对于数据库的操作,完全交给便于对象处理的 Model 层,至于是如何转换为 MongoDB 能识别到的操作语言,这就是 MongoEngine 要做的事情,也是区别于 PyMongo 的地方。
共性
•同样都是对 MongoDB 的操作进行了封装。
•同样都可以用 python 操作。
特性
•PyMongo 更像是一个 MongoDB 的客户端,所以操作起来效率更高效,更直接。
•MongoEngine 操作起来更安全,它对数据库的操作单独剥离出来一个 Model 层。
视图层
flask_admin 提供方面的模板,用于生成视图,并进行数据渲染。
Model 层
MongoEngine 提供抽取出来的 Model 层,可以更好的的对数据库进行合理的限制和使用。包括:
•数据类型
•数据校验规则,如长度、正则表达式
•标签翻译
•字段描述
•集合名称
•排序方式
•索引
•自定义查询集
控制层
可以对抽象出来的 Model 层进行非常方便的操作,如:
•查询
•过滤
•限制
•聚合
总结
综上我们不难发现,flask_admin 与 MongoEngine 的结合,就是 MVC 架构模式。技术本身很枯燥、乏味,但觉不会主动离弃你。