在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中__init__()方法的高级应用
May 11 Python
python中threading超线程用法实例分析
May 16 Python
详解python之简单主机批量管理工具
Jan 27 Python
Python对列表去重的多种方法(四种方法)
Dec 05 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
Oct 26 Python
pygame游戏之旅 创建游戏窗口界面
Nov 20 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
Python文件操作方法详解
Feb 09 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
Apr 14 Python
matplotlib更改窗口图标的方法示例
Feb 03 Python
利用Python批量识别电子账单数据的方法
Feb 08 Python
Python编程编写完善的命令行工具
Sep 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
攻克CakePHP系列三 表单数据增删改
2008/10/22 PHP
PHP调用Webservice实例代码
2011/07/29 PHP
php实现查看邮件是否已被阅读的方法
2013/12/03 PHP
PHP return语句另类用法不止是在函数中
2014/09/17 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
通过实例解析PHP数据类型转换方法
2020/07/11 PHP
仿迅雷焦点广告效果(JQuery版)
2008/11/19 Javascript
计算世界完全对称日的js代码,粗糙版
2011/11/04 Javascript
javascript中的onkeyup和onkeydown区别介绍
2013/04/28 Javascript
HTML Color Picker(js拾色器效果)
2013/08/27 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
jquery移动节点实例
2015/01/14 Javascript
用户代理字符串userAgent可实现的四个识别
2015/09/20 Javascript
JavaScript html5 canvas绘制时钟效果
2016/03/01 Javascript
Node.js中sequelize时区的配置方法
2017/12/10 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
webpack中如何加载静态文件的方法步骤
2019/05/18 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
10 分钟快速入门 Python3的教程
2019/01/29 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
2019/06/04 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
Python sorted排序方法如何实现
2020/03/31 Python
Python数据可视化实现多种图例代码详解
2020/07/14 Python
详解scrapy内置中间件的顺序
2020/09/28 Python
CSS去掉A标签(链接)虚线框的方法
2014/04/01 HTML / CSS
美国运动鞋和运动服零售商:Footaction
2017/04/07 全球购物
最新英语专业学生求职信范文
2013/09/21 职场文书
美德少年事迹材料1000字
2014/08/21 职场文书
小学生纪念九一八事变演讲稿
2014/09/14 职场文书
2014年四风问题自我剖析材料
2014/09/15 职场文书
2014和解协议书范文
2014/09/15 职场文书
学校领导班子四风对照检查材料
2014/09/27 职场文书
师德师风整改措施
2014/10/24 职场文书
培训班开班主持词
2015/07/02 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript