在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自动安装pip
Apr 24 Python
python实现simhash算法实例
Apr 25 Python
Ruby元编程基础学习笔记整理
Jul 02 Python
Python机器学习算法之k均值聚类(k-means)
Feb 23 Python
python3操作微信itchat实现发送图片
Feb 24 Python
Python之列表的插入&amp;替换修改方法
Jun 28 Python
python2.7实现邮件发送功能
Dec 12 Python
python读取csv和txt数据转换成向量的实例
Feb 12 Python
python实现图片九宫格分割
Mar 07 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
Feb 29 Python
使用python求斐波那契数列中第n个数的值示例代码
Jul 26 Python
pytorch __init__、forward与__call__的用法小结
Feb 27 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/12/04 PHP
php中filter函数验证、过滤用户输入的数据
2014/01/13 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
全新Mac配置PHP开发环境教程
2016/02/03 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
yii2使用GridView实现数据全选及批量删除按钮示例
2017/03/01 PHP
提高网站信任度的技巧
2008/10/17 Javascript
JS 密码强度验证(兼容IE,火狐,谷歌)
2010/03/15 Javascript
javascript获取作用在元素上面的样式属性代码
2012/09/20 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
理解jquery事件冒泡
2016/01/03 Javascript
新入门node.js必须要知道的概念(必看篇)
2016/08/10 Javascript
Javascript中apply、call、bind的巧妙使用
2016/08/18 Javascript
WebPack基础知识详解
2017/01/16 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
详解使用jest对vue项目进行单元测试
2018/09/07 Javascript
Vue数组响应式操作及高阶函数使用代码详解
2020/08/01 Javascript
Python 文件操作技巧(File operation) 实例代码分析
2008/08/11 Python
ubuntu系统下 python链接mysql数据库的方法
2017/01/09 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
2017/07/24 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
2020/02/15 Python
python中数据库like模糊查询方式
2020/03/02 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
2020/05/22 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
pandas数据分组groupby()和统计函数agg()的使用
2021/03/04 Python
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
实习生个人的自我评价
2013/12/08 职场文书
企业门卫岗位职责
2013/12/12 职场文书
自我评价范文
2013/12/22 职场文书
技能竞赛活动方案
2014/02/21 职场文书
房地产端午节活动方案
2014/08/24 职场文书
群众路线教师自我剖析材料
2014/09/29 职场文书
2014年女职工工作总结
2014/11/27 职场文书
个人售房合同协议书
2016/03/21 职场文书