在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统计一个文本中重复行数的方法
Nov 19 Python
在Python中使用HTML模版的教程
Apr 29 Python
python 链接和操作 memcache方法
Mar 04 Python
Python如何读取MySQL数据库表数据
Mar 11 Python
关于Python中浮点数精度处理的技巧总结
Aug 10 Python
python基础while循环及if判断的实例讲解
Aug 25 Python
Python 实现12306登录功能实例代码
Feb 09 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
Sep 06 Python
Python爬虫之urllib基础用法教程
Oct 12 Python
使用Python-OpenCV消除图像中孤立的小区域操作
Jul 05 Python
Win10环境中如何实现python2和python3并存
Jul 20 Python
一篇文章带你搞懂Python类的相关知识
May 20 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中time()与$_SERVER[REQUEST_TIME]用法区别
2014/11/19 PHP
支持中文、字母、数字的PHP验证码
2015/05/04 PHP
PHP7常量数组用法分析
2016/09/26 PHP
php封装一个异常的处理类
2017/06/08 PHP
PHP code 验证码生成类定义和简单使用示例
2020/05/27 PHP
JS案例分享之金额小写转大写
2014/05/15 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
JavaScript中对JSON对象的基本操作示例
2016/05/21 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
JavaScript编写一个贪吃蛇游戏
2017/03/09 Javascript
fullPage.js和CSS3实现全屏滚动效果
2017/05/05 Javascript
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
用原生 JS 实现 innerHTML 功能实例详解
2019/04/03 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
2019/08/27 Javascript
Weex开发之WEEX-EROS开发踩坑(小结)
2019/10/16 Javascript
vue项目强制清除页面缓存的例子
2019/11/06 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
初学python的操作难点总结(新手必看篇)
2017/08/03 Python
Python实现的直接插入排序算法示例
2018/04/29 Python
对pandas的层次索引与取值的新方法详解
2018/11/06 Python
Python下简易的单例模式详解
2019/04/08 Python
Python 动态变量名定义与调用方法
2020/02/09 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
2020/02/12 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
颇特女士香港官网:NET-A-PORTER香港
2021/03/08 全球购物
西式结婚主持词
2014/03/14 职场文书
2014迎国庆标语大全
2014/09/19 职场文书
道歉的话怎么说
2015/05/12 职场文书
长征观后感
2015/06/09 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书
Python中glob库实现文件名的匹配
2021/06/18 Python
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python
关于python中模块和重载的问题
2021/11/02 Python