在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输出当前目录下index.html文件路径的方法
Apr 28 Python
Python之re操作方法(详解)
Jun 14 Python
Sanic框架安装与简单入门示例
Jul 16 Python
Random 在 Python 中的使用方法
Aug 09 Python
python生成n个元素的全组合方法
Nov 13 Python
Python3从零开始搭建一个语音对话机器人的实现
Aug 23 Python
Python 实现try重新执行
Dec 21 Python
python爬虫库scrapy简单使用实例详解
Feb 10 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
May 03 Python
基于Python绘制个人足迹地图
Jun 01 Python
python是怎么被发明的
Jun 15 Python
python 模拟登陆163邮箱
Dec 15 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批量采集下载美女图片的实现代码
2013/06/03 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
2016/11/16 PHP
原生php实现excel文件读写的方法分析
2018/04/25 PHP
laravel Model 执行事务的实现
2019/10/10 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
PHP实现抽奖功能实例代码
2020/06/30 PHP
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
Webkit的跨域安全问题说明
2011/09/13 Javascript
jQuery cdn使用介绍
2013/05/08 Javascript
使用js判断数组中是否包含某一元素(类似于php中的in_array())
2013/12/12 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
jQuery实现淡入淡出二级下拉导航菜单的方法
2015/08/28 Javascript
基于replaceChild制作简单的吞噬特效
2015/09/21 Javascript
JavaScript代码实现左右上下自动晃动自动移动
2016/04/08 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
2016/07/09 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
浅谈JavaScript正则表达式-非捕获性分组
2017/03/08 Javascript
基于JavaScript实现飘落星星特效
2017/08/10 Javascript
Bootstrap图片轮播效果详解
2017/10/17 Javascript
详解node.js 下载图片的 2 种方式
2018/03/02 Javascript
Openlayers+EasyUI Tree动态实现图层控制
2020/09/28 Javascript
[41:17]完美世界DOTA2联赛PWL S3 access vs CPG 第二场 12.13
2020/12/17 DOTA
使用 Python 实现微信公众号粉丝迁移流程
2018/01/03 Python
3种python调用其他脚本的方法
2020/01/06 Python
Python bytes string相互转换过程解析
2020/03/05 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
python 通过邮件控制实现远程控制电脑操作
2020/03/16 Python
新电JAVA笔试题目
2014/08/31 面试题
介绍一下javax.servlet.Servlet接口及其主要方法
2015/11/30 面试题
教师自我评价范文
2013/12/16 职场文书
办公室经理岗位职责
2014/01/01 职场文书
2014年秋季开学演讲稿
2014/05/24 职场文书
机关干部四风问题自我剖析及整改措施
2014/10/26 职场文书
世界文化遗产导游词
2015/02/13 职场文书
Java十分钟精通进阶适配器模式
2022/04/06 Java/Android