在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的id()函数介绍
Feb 10 Python
python动态监控日志内容的示例
Feb 16 Python
python实现可将字符转换成大写的tcp服务器实例
Apr 29 Python
详解Python的Django框架中inclusion_tag的使用
Jul 21 Python
python实现搜索本地文件信息写入文件的方法
Feb 22 Python
Python探索之创建二叉树
Oct 25 Python
python爬虫简单的添加代理进行访问的实现代码
Apr 04 Python
Python数据类型之String字符串实例详解
May 08 Python
python多线程http压力测试脚本
Jun 25 Python
python tkinter实现屏保程序
Jul 30 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
Feb 25 Python
基于Python实现视频的人脸融合功能
Jun 12 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
html中select语句读取mysql表中内容
2006/10/09 PHP
简单的页面缓冲技术
2006/10/09 PHP
PHP Curl多线程原理实例详解
2013/11/06 PHP
php判断访问IP的方法
2015/06/19 PHP
PHP实现163邮箱自动发送邮件
2016/03/29 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
JavaScript Event学习第二章 Event浏览器兼容性
2010/02/07 Javascript
JavaScript下通过的XMLHttpRequest发送请求的代码
2011/06/28 Javascript
浅析js中2个等号与3个等号的区别
2013/08/06 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
JS自定义混合Mixin函数示例
2016/11/26 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
JavaScript设计模式之模板方法模式原理与用法示例
2018/08/07 Javascript
微信小程序之swiper滑动面板用法示例
2018/12/04 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
2018/12/05 jQuery
vue draggable resizable gorkys与v-chart使用与总结
2019/09/05 Javascript
[02:45]DOTA2英雄敌法师基础教程
2013/11/25 DOTA
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
Python 返回汉字的汉语拼音
2009/02/27 Python
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
python中pylint使用方法(pylint代码检查)
2018/04/06 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
2019/07/30 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
Python scrapy爬取小说代码案例详解
2020/07/09 Python
浅析Python面向对象编程
2020/07/10 Python
欧舒丹加拿大官网:L’Occitane加拿大
2017/10/29 全球购物
绩效管理实施方案
2014/03/19 职场文书
小学五年级学生评语
2014/04/22 职场文书
论文诚信承诺书
2014/05/23 职场文书
个人德育工作总结
2015/03/05 职场文书
人与自然观后感
2015/06/16 职场文书
2016护理专业求职自荐书
2016/01/28 职场文书
利用Java设置Word文本框中的文字旋转方向的实现方法
2021/06/28 Java/Android
Python实现简单的俄罗斯方块游戏
2021/09/25 Python
MongoDB修改oplog大小的四种方法
2022/04/11 MongoDB