在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 11 Python
用于统计项目中代码总行数的Python脚本分享
Apr 21 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
Nov 16 Python
Python中文件的读取和写入操作
Apr 27 Python
Python IDLE清空窗口的实例
Jun 25 Python
pycharm 解除默认unittest模式的方法
Nov 30 Python
django-rest-framework 自定义swagger过程详解
Jul 18 Python
解决Atom安装Hydrogen无法运行python3的问题
Aug 28 Python
python写一个随机点名软件的实例
Nov 28 Python
Jupyter Notebook 实现正常显示中文和负号
Apr 24 Python
简述python Scrapy框架
Aug 17 Python
Python docx库删除复制paragraph及行高设置图片插入示例
Jul 23 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
Discuz 5.0 中读取纯真IP数据库函数分析
2007/03/16 PHP
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
2010/10/12 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
深入浅析安装PhpStorm并激活的步骤详解
2020/09/17 PHP
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
Javascript中的几种URL编码方法比较
2015/01/23 Javascript
JavaScript运算符小结
2015/06/03 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
js实现页面a向页面b传参的方法
2016/05/29 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
Javascript实现前端简单的路由实例
2016/09/11 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
react实现点击选中的li高亮的示例代码
2018/05/24 Javascript
Vue的Options用法说明
2020/08/14 Javascript
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
Python入门篇之正则表达式
2014/10/20 Python
在Python中使用正则表达式的方法
2015/08/13 Python
python连接数据库的方法
2017/10/19 Python
Django框架使用内置方法实现登录功能详解
2019/06/12 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
2019/10/14 Python
Python pandas 列转行操作详解(类似hive中explode方法)
2020/05/18 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
2020/06/08 Python
python 字符串的驻留机制及优缺点
2020/06/19 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
python设置中文界面实例方法
2020/10/27 Python
jurlique茱莉蔻英国官网:澳洲天然护肤品
2018/08/03 全球购物
高等教育学自荐书范文
2014/02/10 职场文书
师恩难忘教学反思
2014/04/27 职场文书
心理健康活动总结
2014/04/30 职场文书
竞选班干部演讲稿500字
2014/08/20 职场文书
违反工作规定检讨书范文
2014/12/14 职场文书
入党积极分子培养人意见
2015/06/02 职场文书
Linux中各个目录的作用与内容
2022/06/28 Servers