PyMongo和MongoEngine
PyMongo是一个低级的MongoDB的Python驱动器(我一般称为客户端),它封装了 MongoDB API,并通过JSON与MongoDB通信,PyMongo将MongoDB的数据映射成Python的内置类型。
MongoEngine 是一个Document-Object Mapper (想一下ORM, 但它是针对文档型数据库),Python通过它与MongoDB交互。你可能会说那PyMongo也是ORM啊,在Python中一切都是对象,但我们所说的ORM中的Object在指Python中的自定义类,而不是内置类型。MongoEngine或MongoKit将MongoDB的数据映射成自定义类实例,它们都是基于PyMongo的。
我们可以跟关系型数据库的Python客户端MySQLdb,以及ORM SQLAlchemy/Django ORM比较一下,PyMongo相当于MySQLdb,MongoEngine相当于SQLAlchemy,SQLAlchemy是基于MySQLdb之上的,MongoEngine是基于PyMongo的。
1. Mongoengine是面向对象的,直接继承Document类对数据库进行库和collection的增删改查操作。
2. pymongo中是非面向对象的方式,项目使用时不便
pymongo来操作MongoDB数据库,但是直接把对于数据库的操作代码都写在脚本中,这会让应用的代码耦合性太强,而且不利于代码的优化管理
一般应用都是使用MVC框架来设计的,为了更好地维持MVC结构,需要把数据库操作部分作为model抽离出来,这就需要借助MongoEngine
有多种字段
meta = {
'ordering': ['-published_date']
}
meta:设置一些参数
注意传入字段类型要对应
创建一个meta在文档上调用的类字典属性,并用collection设置集合的名称
一个集合可存储大小的上限默认为10m,但可通过max_size来设置集合可存储大小,同时也可使用max_documents来设置最大文档数量
过滤查询:
young_users = Users.objects(age__lte=18)
__lte 前面是是字段,后面是运算符
默认情况下,字段不是必需的。要使字段成为必填字段,请将字段的 required关键字参数设置为True
.first() 第一个
字段除了required还有多种参数
pymongo用于查询,mongoengine用于创建
1个模型(类)相当于一个表
中文文档:https://www.cnblogs.com/zhenyauntg/p/13201826.html
class Post(db.Document):
meta = {
'collection': 'todo_test'
}
title = db.StringField(max_length=200, required=True)
content = db.IntField(required=True)
author = db.StringField(required=True, max_length=50)
post_obj = Post(
title='Sample Post',
content=638,
author='jack'
)
pos = Post.objects(content='638').first()
pos.delete()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律