在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中使用第三方库xlutils来追加写入Excel文件示例
Apr 05 Python
使用python语言,比较两个字符串是否相同的实例
Jun 29 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
Jul 12 Python
使用Python在Windows下获取USB PID&amp;VID的方法
Jul 02 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
Sep 23 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
Oct 06 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
Jan 21 Python
python字符串,元组,列表,字典互转代码实例详解
Feb 14 Python
基于python实现FTP文件上传与下载操作(ftp&amp;sftp协议)
Apr 01 Python
TensorFlow Autodiff自动微分详解
Jul 06 Python
Python爬虫之Selenium下拉框处理的实现
Dec 04 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
Jan 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
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
我的论坛源代码(四)
2006/10/09 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
phpcmsv9.0任意文件上传漏洞解析
2020/10/20 PHP
详解CSS样式中的 !important * _ 符号
2021/03/09 HTML / CSS
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
2014/03/13 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
使用jquery解析XML示例代码
2014/09/05 Javascript
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
JavaScript获取浏览器信息的方法
2015/11/20 Javascript
js删除数组元素、清空数组的简单方法(必看)
2016/07/27 Javascript
AngularJS实现单独作用域内的数据操作
2016/09/05 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
2016/12/06 Javascript
简单实现jQuery弹窗效果
2017/10/30 jQuery
Python写的PHPMyAdmin暴力破解工具代码
2014/08/06 Python
Python 对象中的数据类型
2017/05/13 Python
Python创建普通菜单示例【基于win32ui模块】
2018/05/09 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
2019/05/28 Python
python怎么调用自己的函数
2020/07/01 Python
结合 CSS3 transition transform 实现简单的跑马灯效果的示例
2018/02/07 HTML / CSS
HTML5 通信API 跨域门槛将不再高、数据推送也不再是梦
2013/04/25 HTML / CSS
Under Armour澳大利亚官网:美国知名的高端功能性运动品牌
2018/02/22 全球购物
美国在线健康和美容市场:Pharmapacks
2018/12/05 全球购物
String是最基本的数据类型吗?
2013/06/13 面试题
酒店员工检讨书
2014/02/18 职场文书
《数星星的孩子》教学反思
2014/04/11 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
故宫英文导游词
2015/01/31 职场文书
2015年七一建党节演讲稿
2015/03/19 职场文书
汉字听写大会观后感
2015/06/12 职场文书
运动会新闻稿
2015/07/17 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript
Sleuth+logback 设置traceid 及自定义信息方式
2021/07/26 Java/Android