在Python中使用MongoEngine操作数据库教程实例


Posted in Python onDecember 03, 2019

这篇文章主要介绍了在Python中使用MongoEngine操作数据库教程实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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 datetime
class 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)

在Python中使用MongoEngine操作数据库教程实例

保存文档

from mongoengine import *
connect('test', host='localhost', port=27017)
import datetime
class 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)

在Python中使用MongoEngine操作数据库教程实例

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

from mongoengine import *
connect('test', host='localhost', port=27017)
import datetime
class 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)

在Python中使用MongoEngine操作数据库教程实例

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

from mongoengine import *
connect('test', host='localhost', port=27017)
import datetime
class 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)

在Python中使用MongoEngine操作数据库教程实例

查询name=zz11

from mongoengine import *
connect('test', host='localhost', port=27017)
import datetime
class 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)

在Python中使用MongoEngine操作数据库教程实例

修改name=zz11的age加1

from mongoengine import *
connect('test', host='localhost', port=27017)
import datetime
class 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)

在Python中使用MongoEngine操作数据库教程实例

修改name=zz11的age设为55

from mongoengine import *
connect('test', host='localhost', port=27017)
import datetime
class 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中使用MongoEngine操作数据库教程实例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
为Python的web框架编写前端模版的教程
Apr 30 Python
视觉直观感受若干常用排序算法
Apr 13 Python
Python守护线程用法实例
Jun 23 Python
Django的models中on_delete参数详解
Jul 16 Python
python tkinter 设置窗口大小不可缩放实例
Mar 04 Python
python如何求100以内的素数
May 27 Python
浅析Python面向对象编程
Jul 10 Python
Python 爬虫的原理
Jul 30 Python
Python3如何实现Win10桌面自动切换
Aug 11 Python
如何使用Python调整图像大小
Sep 26 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
Dec 29 Python
python多线程爬取西刺代理的示例代码
Jan 30 Python
matplotlib绘制多个子图(subplot)的方法
Dec 03 #Python
python单向循环链表原理与实现方法示例
Dec 03 #Python
使用 Python 清理收藏夹里已失效的网站
Dec 03 #Python
Python常用模块os.path之文件及路径操作方法
Dec 03 #Python
Python中顺序表原理与实现方法详解
Dec 03 #Python
python双向链表原理与实现方法详解
Dec 03 #Python
Python读取实时数据流示例
Dec 02 #Python
You might like
剖析 PHP 中的输出缓冲
2006/12/21 PHP
php zip文件解压类代码
2009/12/02 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
2020/07/10 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
js 函数的执行环境和作用域链的深入解析
2009/11/01 Javascript
javascript在事件监听方面的兼容性小结
2010/04/07 Javascript
JSQL SQLProxy 的 php 版本代码
2010/05/05 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
2013/05/19 Javascript
基于jQuery实现在线选座之高铁版
2015/08/24 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
2016/06/09 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
vue组件间通信六种方式(总结篇)
2019/05/15 Javascript
微信小程序音乐播放器开发
2019/11/20 Javascript
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
python删除文件示例分享
2014/01/28 Python
Python socket C/S结构的聊天室应用实现
2014/11/30 Python
tensorflow: 查看 tensor详细数值方法
2018/06/13 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
2020/06/02 Python
浅谈python 调用open()打开文件时路径出错的原因
2020/06/05 Python
浅谈Python 参数与变量
2020/06/20 Python
Python爬取梨视频的示例
2021/01/29 Python
Python 爬取淘宝商品信息栏目的实现
2021/02/06 Python
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
俄罗斯香水和化妆品网上商店:NOTINO.ru
2019/12/17 全球购物
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
党员个人思想汇报
2013/12/28 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
2014教育局对照检查材料思想汇报
2014/09/23 职场文书
领导班子三严三实对照检查材料
2014/09/25 职场文书
国土资源局开展党的群众路线教育实践活动整改措施
2014/09/26 职场文书
亮剑观后感
2015/06/05 职场文书
企业安全隐患排查治理制度
2015/08/05 职场文书
党员反四风学习心得体会
2016/01/22 职场文书