首页 技术 正文
技术 2022年11月18日
0 收藏 584 点赞 4,378 浏览 2420 个字

pymongo来操作MongoDB数据库,但是直接把对于数据库的操作代码都写在脚本中,这会让应用的代码耦合性太强,而且不利于代码的优化管理

一般应用都是使用MVC框架来设计的,为了更好地维持MVC结构,需要把数据库操作部分作为model抽离出来,这就需要借助MongoEngine

MongoEngine是一个对象文档映射器(ODM),相当于一个基于SQL的对象关系映射器(ORM)

MongoEngine提供的抽象是基于类的,创建的所有模型都是类

安装

pip install mongoengine

使用时先声明一个继承自MongoEngine.Document的类

在类中声明一些属性,相当于创建一个用来保存数据的数据结构,即数据已类似数据结构的形式存入数据库中,通常把这样的一些类都存放在一个脚本中,作为应用的Model模块

from mongoengine import *connect('test', host='localhost', port=27017)import datetimeclass Users(Document):    name = StringField(required=True, max_length=200)    age = IntField(required=True)users = Users.objects.all() #返回所有的文档对象列表for u in users:    print("name:",u.name,",age:",u.age)

  

保存文档

from mongoengine import *connect('test', host='localhost', port=27017)import datetimeclass Users(Document):    name = StringField(required=True, max_length=200)    age = IntField(required=True)user1 = Users(    name='zz',    age= 11)user1.save()print(user1.name)user1.name = 'zz11'user1.save()print(user1.name)

  

查询10=<年龄<30的,按姓名排列

from mongoengine import *connect('test', host='localhost', port=27017)import datetimeclass Users(Document):    name = StringField(required=True, max_length=200)    age = IntField(required=True)user_search = Users.objects(age__gte=10, age__lt=33).order_by('name')for u in user_search:    print("name:",u.name,",age:",u.age)

  

查询10=<年龄<30的,按姓名倒序

from mongoengine import *connect('test', host='localhost', port=27017)import datetimeclass Users(Document):    name = StringField(required=True, max_length=200)    age = IntField(required=True)user_search = Users.objects(age__gte=10, age__lt=33).order_by('-name')for u in user_search:    print("name:",u.name,",age:",u.age)

  

查询name=zz11

from mongoengine import *connect('test', host='localhost', port=27017)import datetimeclass Users(Document):    name = StringField(required=True, max_length=200)    age = IntField(required=True)tmp = Users.objects(name="zz11")for u in tmp:    print("name:",u.name,",age:",u.age)

  

修改name=zz11的age加1

from mongoengine import *connect('test', host='localhost', port=27017)import datetimeclass Users(Document):    name = StringField(required=True, max_length=200)    age = IntField(required=True)tmp = Users.objects(name="zz11").update(inc__age=1)tmp = Users.objects(name="zz11")for u in tmp:    print("name:",u.name,",age:",u.age)

  

修改name=zz11的age设为55

from mongoengine import *connect('test', host='localhost', port=27017)import datetimeclass Users(Document):    name = StringField(required=True, max_length=200)    age = IntField(required=True)tmp = Users.objects(name="zz11").update(set__age=55)tmp = Users.objects(name="zz11")for u in tmp:    print("name:",u.name,",age:",u.age)

  

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,075
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,551
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,399
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,811
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,893