在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编程过程中用单元测试法调试代码的介绍
Apr 02 Python
使用Python神器对付12306变态验证码
Jan 05 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
Nov 29 Python
一道python走迷宫算法题
Jan 22 Python
[原创]Python入门教程3. 列表基本操作【定义、运算、常用函数】
Oct 30 Python
Python面向对象程序设计之类的定义与继承简单示例
Mar 18 Python
python语言元素知识点详解
May 15 Python
Django框架登录加上验证码校验实现验证功能示例
May 23 Python
Python函数中的可变长参数详解
Sep 12 Python
Python利用PyExecJS库执行JS函数的案例分析
Dec 18 Python
Python接口开发实现步骤详解
Apr 26 Python
python实现高效的遗传算法
Apr 07 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中empty is_null和isset的测试
2013/06/29 PHP
php实现数组筛选奇数和偶数示例
2014/04/11 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
PHP实现动态柱状图改进版
2015/03/30 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
2017/05/30 PHP
javascript实现仿银行密码输入框效果的代码
2007/12/13 Javascript
基于jquery的图片懒加载js
2010/06/30 Javascript
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
jQuery实现元素拖拽并cookie保存顺序的方法
2016/02/20 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
详解VUE2.X过滤器的使用方法
2018/01/11 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
Vue.js 中的 v-cloak 指令及使用详解
2018/11/19 Javascript
解决layui表格内文本超出隐藏的问题
2019/09/12 Javascript
微信小程序点击view动态添加样式过程解析
2020/01/21 Javascript
微信小程序中的上拉、下拉菜单功能
2020/03/13 Javascript
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
Python OpenCV 直方图的计算与显示的方法示例
2018/02/08 Python
linux下安装python3和对应的pip环境教程详解
2019/07/01 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
python中的split()函数和os.path.split()函数使用详解
2019/12/21 Python
Python随机数函数代码实例解析
2020/02/09 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
EJB的基本架构
2016/09/22 面试题
优秀广告词大全
2014/03/19 职场文书
《长相思》听课反思
2014/04/10 职场文书
厂区绿化方案
2014/05/08 职场文书
应聘护士求职信
2014/07/21 职场文书
见习报告的格式
2014/11/04 职场文书
2014年班组长工作总结
2014/11/20 职场文书
超级礼物观后感
2015/06/15 职场文书
化工生产实习心得体会
2016/01/22 职场文书
合作意向书范本
2019/04/17 职场文书
vue3.0 数字翻牌组件的使用方法详解
2022/04/20 Vue.js