在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之关于类的初步认识
Oct 11 Python
python分析网页上所有超链接的方法
May 08 Python
详解Django通用视图中的函数包装
Jul 21 Python
python字典的常用操作方法小结
May 16 Python
python 除法保留两位小数点的方法
Jul 16 Python
Python 字符串换行的多种方式
Sep 06 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
Jul 11 Python
python 实现绘制整齐的表格
Nov 18 Python
tensorflow之自定义神经网络层实例
Feb 07 Python
python用pip install时安装失败的一系列问题及解决方法
Feb 24 Python
python如何将两张图片生成为全景图片
Mar 05 Python
Java爬虫技术框架之Heritrix框架详解
Jul 22 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
解决中英文字符串长度问题函数
2007/01/16 PHP
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
php发送post请求函数分享
2014/03/06 PHP
Extjs学习笔记之八 继承和事件基础
2010/01/08 Javascript
jQuery学习笔记之Helloworld
2010/12/22 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
javascript中window.event事件用法详解
2012/12/11 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
javascript版2048小游戏
2015/03/18 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
jquery Easyui快速开发总结
2015/08/20 Javascript
JS跨域解决方案之使用CORS实现跨域
2016/04/14 Javascript
JQuery遍历元素的父辈和祖先的方法
2016/09/18 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
JS如何设置元素样式的方法示例
2017/08/28 Javascript
JS二分查找算法详解
2017/11/01 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
2018/02/16 Javascript
create-react-app构建项目慢的解决方法
2018/03/14 Javascript
解决iView中时间控件选择的时间总是少一天的问题
2018/03/15 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
python多线程编程方式分析示例详解
2013/12/06 Python
跟老齐学Python之Python安装
2014/09/12 Python
Python中的choice()方法使用详解
2015/05/15 Python
Python获取系统默认字符编码的方法
2015/06/04 Python
python批量修改文件夹及其子文件夹下的文件内容
2019/03/15 Python
Python的轻量级ORM框架peewee使用教程
2021/02/05 Python
大四毕业生学习总结的自我评价
2013/10/31 职场文书
大学毕业生自荐书怎么写?
2014/01/06 职场文书
预备党员转正考核材料
2014/06/03 职场文书
水电维修专业推荐信
2014/09/06 职场文书
初一军训感言
2015/08/01 职场文书
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android
Java实现注册登录跳转
2022/06/16 Java/Android