python 操作三大主流数据库 第八课 ODM模型操作MongoDB

本文详细介绍了如何使用Python的MongoEngine库进行MongoDB数据库的操作,包括安装配置、连接数据库的方法,以及通过ODM(对象文档映射)实现数据模型的构建、查询、更新和删除等核心功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python 操作三大主流数据库 第八课

tags:

  • python3
  • 慕课网

categories:

  • python3

  • MongoDB

  • ODM

第一节 MongoEngine安装及连接

1. mongoengine安装

1. 安装:pip install -i https://pypi.douban.com/simple/ mongoengine
2. Pypi: https://pypi.python.org/pypi/mongoengine
3. Github: https://github.com/MongoEngine/mongoengine
4. 文档: https://mongoengine-odm.readthedocs.io/index.html

2. mongoengine连接MongoDB数据库

1. 首先把MongoDB的服务启动起来mongod.exe --dbpath D:\MongoDB\DB
2. 方式一:简写 connect('students')
3. 方式二:指定端口和地址connect('students', host= '192.168.1.35, port=27017)
4. 方式三:使用URI connect('students', host= 'mongodb://localhost/students')

第二节 ODM模型介绍以及增删改查

1. 常见类型和数据库模型构建

1. StringField
2. ObjectldFiel
3. IntField
4. FloatField
5. DecimalField
6. BooleanField
7. DateTimeField
8. ListField
# mongoengine连接MongoDB数据库
from mongoengine import connect, Document, EmbeddedDocument, DynamicDocument, StringField, IntField, \
    FloatField, ListField, EmbeddedDocumentField
connect('students')

SEX_CHICES = (
    ('male', '男'),
    ('female', '女')
)


class Grade(EmbeddedDocument):
    ''' 学生的成绩 '''
    name = StringField(required=True) # 课程
    score = FloatField(required=True)
    

#class Student(Document):
# 如果我们想增加一些students没有的字段,可以用DynamicDocument。
# 使用Document如果字段没有定义, 就不能增删改查。可以用DynamicDocument改进
class Student(DynamicDocument):
	'''学生'''
    name = StringField(max_length=32, required=True)
    age = IntField(required=True)
    sex = StringField(choices=SEX_CHICES, required=True)
    grade = FloatField()
    address = StringField()
     # 很多科目的成绩 嵌套的文档
    grades = ListField(EmbeddedDocumentField(Grade))

    meta = {
    	# 指定添加到students集合,不设置的话默认为student集合
        'collection': 'students',
        # 排序功能,按照分数倒序
        'ordering': ['-grade']
    }

2. 查询数据

    def get_one(self):
        ''' 获取单条数据 '''
        return Student.objects.first()

    def get_more(self):
        ''' 获取多条数据 '''
        # return Student.objects
        return Student.objects.all()

    def get_one_from_oid(self, oid):
        ''' 查询指定id的数据 '''
        return Student.objects.filter(id=oid).first()

3. 修改数据

   def update(self):
        ''' 修改数据 '''
        # 修改一条数据
        # res = Student.objects.filter(sex='male').update_one(inc__age=1)
        # return res

        # 修改多条数据
        res = Student.objects.filter(sex='male').update(inc__age=10)
        return res

4. 删除数据

    def delete(self):
        ''' 删除数据 '''
        # 删除一条数据
        # res = Student.objects.filter(sex='male').first().delete()
        # return res

        # 删除多条数据
        res = Student.objects.filter(gender='male').delete()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值