在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模板应用
Dec 26 Python
目前最全的python的就业方向
Jun 05 Python
用python爬取租房网站信息的代码
Dec 14 Python
Python制作动态字符图的实例
Jan 27 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
Aug 26 Python
使用TensorFlow-Slim进行图像分类的实现
Dec 31 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
Feb 10 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
Feb 11 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
Feb 28 Python
基于Python和C++实现删除链表的节点
Jul 06 Python
用Python制作mini翻译器的实现示例
Aug 17 Python
Python一行代码实现自动发邮件功能
May 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通用防注入程序 推荐
2011/02/26 PHP
PHP实现服务器状态监控的方法
2014/12/09 PHP
php中删除数组的第一个元素和最后一个元素的函数
2015/03/07 PHP
Yii2.0实现的批量更新及批量插入功能示例
2019/01/29 PHP
JavaScript的9个陷阱及评点分析
2008/05/16 Javascript
javascript form 验证函数 弹出对话框形式
2009/06/23 Javascript
jQuery获取css z-index在各种浏览器中的返回值
2010/09/15 Javascript
JSON 数据格式介绍
2012/01/13 Javascript
jQuery对html元素取值与赋值的方法
2013/11/20 Javascript
JavaScript简单表格编辑功能实现方法
2015/04/16 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
2015/06/10 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
2016/01/27 Javascript
总结在前端排序中遇到的问题
2016/07/19 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
浅析JavaScript中break、continue和return的区别
2016/11/30 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
vue中的event bus非父子组件通信解析
2017/10/27 Javascript
使用jQuery动态设置单选框的选中效果
2018/12/06 jQuery
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
JavaScript中展开运算符及应用的实例代码
2021/01/14 Javascript
[01:46]辉夜杯—打造中国DOTA新格局
2015/12/25 DOTA
python中反射用法实例
2015/03/27 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
python变量赋值方法(可变与不可变)
2019/01/12 Python
Python中有几个关键字
2020/06/04 Python
Python中常用的os操作汇总
2020/11/05 Python
Python APScheduler执行使用方法详解
2020/12/10 Python
西班牙汉普顿小姐:购买帆布鞋和太阳镜
2016/10/23 全球购物
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
英国著名书店:Foyles
2018/12/01 全球购物
业务员自荐信范文
2014/04/20 职场文书
党员承诺践诺书
2014/05/20 职场文书
关于上班时间调整的通知
2015/04/23 职场文书
校园之声广播稿
2015/08/18 职场文书
护理专业毕业自我鉴定
2019/08/12 职场文书