在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中open函数的使用
Mar 01 Python
Python语言实现获取主机名根据端口杀死进程
Mar 31 Python
python3使用PyMysql连接mysql数据库实例
Feb 07 Python
windows下Python实现将pdf文件转化为png格式图片的方法
Jul 21 Python
numpy找出array中的最大值,最小值实例
Apr 03 Python
int在python中的含义以及用法
Jun 27 Python
python获取txt文件词向量过程详解
Jul 05 Python
基于多进程中APScheduler重复运行的解决方法
Jul 22 Python
Django通过dwebsocket实现websocket的例子
Nov 15 Python
python爬取代理ip的示例
Dec 18 Python
利用python绘制正态分布曲线
Jan 04 Python
django使用多个数据库的方法实例
Mar 04 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
yii用户注册表单验证实例
2015/12/26 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
php xhprof使用实例详解
2019/04/15 PHP
arguments对象
2006/11/20 Javascript
用jscript实现新建word文档
2007/06/15 Javascript
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
2013/04/28 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
2013/09/03 Javascript
iframe实用操作锦集
2014/04/22 Javascript
js 加密压缩出现bug解决方案
2014/11/25 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
探究Vue.js 2.0新增的虚拟DOM
2016/10/20 Javascript
jQuery树插件zTree使用方法详解
2017/05/02 jQuery
利用Vue.js实现求职在线之职位查询功能
2017/07/03 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
微信小程序实现tab左右切换效果
2020/11/15 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
2018/10/18 Javascript
Jquery 获取相同NAME 或者id删除行操作
2020/08/24 jQuery
Python中的并发编程实例
2014/07/07 Python
python 性能优化方法小结
2017/03/31 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
苹果中国官方网站:Apple中国
2016/07/22 全球购物
Myprotein瑞典官方网站:畅销欧洲英国运动营养品牌
2018/01/22 全球购物
英国家喻户晓的家居商店:The Range
2019/03/25 全球购物
饲料采购员岗位职责
2013/12/19 职场文书
开学典礼演讲稿
2014/05/23 职场文书
交通志愿者活动总结
2014/06/27 职场文书
民族学专业职业生涯规划范文:积跬步以至千里
2014/09/11 职场文书
市场部岗位职责
2015/02/12 职场文书
2016年企业先进员工事迹材料
2016/02/25 职场文书
Django操作cookie的实现
2021/05/26 Python
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript
MySQL优化之慢日志查询
2022/06/10 MySQL