python操作mongodb数据库③mongodb odm模型mongoengine的使用

文档:http://mongoengine-odm.readthedocs.io/guide/

安装
pip install mongoengine

连接mongodb

方式1:简写
connect('students')
>>> from mongoengine import connect
>>> connect('students')
MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True, read_preference=Primary()) 方式2:指定端口和地址
connect('students',host='192.168.3.96',port=) 方式3:使用URI
connect('students',host='mongodb://localhost/students')

示例代码,使用mongoengine操作mongodb数据库

#coding:utf-8
from mongoengine import connect, Document, EmbeddedDocument, DynamicDocument, StringField, IntField,\
FloatField, ListField, EmbeddedDocumentField connect('students') SEX_CHICES = (
('male','男'),
('female','女')
) class Grade(EmbeddedDocument):
''' 成绩 '''
name = StringField(required=True)
score = FloatField(required=True) # class Student(Document):
class Student(DynamicDocument):
'''学生'''
name = StringField(max_length=32, required=True)
age = IntField(required=True)
sex = StringField(choices=SEX_CHICES, required=True)
grade = FloatField()
address = StringField()
grades = ListField(EmbeddedDocumentField(Grade)) meta = {
'collection': 'students',
# 排序功能,按照分数倒序
'ordering':['-grade']
} class TestMongoEngine(object):
def add_one(self):
'''添加一条数据到数据库'''
yuwen = Grade(
name = '语文',
score = 90)
shuxue = Grade(
name = '数学',
score = 100)
stu_obj = Student(
name = '张三丰',
age = 15,
grades = [yuwen, shuxue],
sex = 'male'
)
# 直接添加remark字段是无法添加成功的,需要引入动态添加字段的方法DynamicDocument
     
stu_obj.remark = 'remark'
stu_obj.save()
return stu_obj def get_one(self):
''' 获取单条数据 '''
return Student.objects.first() def get_more(self):
''' 获取多条数据 '''
# return Student.objects
return Student.objects.all() def get_one_from_oid(self, oid):
''' 查询指定id的数据 '''
return Student.objects.filter(id=oid).first() def update(self):
''' 修改数据 '''
# 修改一条数据
# res = Student.objects.filter(sex='male').update_one(inc__age=1)
# return res # 修改多条数据
res = Student.objects.filter(sex = 'male').update(inc__age=10)
return res def delete(self):
''' 删除数据 '''
# 删除一条数据
# res = Student.objects.filter(sex='male').first().delete()
# return res # 删除多条数据
res = Student.objects.filter(gender='male').delete() def main():
en = TestMongoEngine()
# en.add_one() # res = en.get_one()
# print(res.name) # rows = en.get_more()
# for row in rows:
# print(row.name) # res = en.get_one_from_oid('5a9df2e48a86b467d4a2c44f')
# print(res.name) # res = en.update()
# print(res) res = en.delete()
print(res) if __name__ == "__main__":
main()

python操作三大主流数据库(9)python操作mongodb数据库③mongodb odm模型mongoengine的使用的更多相关文章

  1. python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改、删除操作

    python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改.删除操作 项目目录: ├── flask_redis_news.py ├── forms.py ├ ...

  2. python操作三大主流数据库(12)python操作redis的api框架redis-py简单使用

    python操作三大主流数据库(12)python操作redis的api框架redis-py简单使用 redispy安装安装及简单使用:https://github.com/andymccurdy/r ...

  3. Python操作三大主流数据库☝☝☝

    Python操作三大主流数据库☝☝☝ Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数 ...

  4. Python操作三大主流数据库✍✍✍

    Python操作三大主流数据库 Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库, ...

  5. python操作三大主流数据库(10)python操作mongodb数据库④mongodb新闻项目实战

    python操作mongodb数据库④mongodb新闻项目实战 参考文档:http://flask-mongoengine.readthedocs.io/en/latest/ 目录: [root@n ...

  6. python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查

    python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...

  7. python操作三大主流数据库(7)python操作mongodb数据库①mongodb的安装和简单使用

    python操作mongodb数据库①mongodb的安装和简单使用 参考文档:中文版:http://www.mongoing.com/docs/crud.html英文版:https://docs.m ...

  8. Python操作三大主流数据库

    Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库:  ...

  9. python操作三大主流数据库(6)python操作mysql⑥新闻管理后台功能的完善(增、ajax异步删除新闻、改、查)

    python操作mysql⑥新闻管理后台功能的完善(增.删.改.查)安装表单验证D:\python\python_mysql_redis_mongodb\version02>pip instal ...

随机推荐

  1. Understanding Favicon

    Favicon 简介 Favicon : 是favorites icon 的缩写,被称为website icon . page icon. urlicon. 最初定义一个favicon的方法是将一个名 ...

  2. 使用C#的HttpWebRequest模拟登陆网站

    很久没有写新的东西了,今天在工作中遇到的一个问题,感觉很有用,有种想记下来的冲动. 这篇文章是有关模拟登录网站方面的. 实现步骤: 启用一个web会话 发送模拟数据请求(POST或者GET) 获取会话 ...

  3. Centos7安装官方JDK

    一.下载jdk最新版本版本 链接地址:官方地址 二.上传jdk到centos下 三.检查当前linux系统上是否有jdk,linux命令:rpm -qa | grep java 查询结果: 卸载掉系统 ...

  4. vue-router导航钩子

    Vue路由中的导航钩子,可以用来拦截导航,让它完成跳转. 全局导航钩子 当一个导航触发时,全局的 before 钩子按照创建顺序调用.钩子是异步解析执行,此时导航在所有钩子 resolve 完之前一直 ...

  5. webpack3.x版本实战案例【基础配置篇】(一)

    本文旨在通过一个一个实战例子来学习webpack如何配置,更加深入的学习webpack在实战项目中如何配置. 我们学习哪些配置呢? [基础配置] 打包JS 编译ES6 编译typeScript 打包公 ...

  6. Objects类的静态方法

    提供了几个静态方法,比如进行对象之间的比较等,而又因为Object是任何对象的超类,因为每个对象都可以调用这几个方法. 1.equals方法 可以防止空指针异常 String s1 = null; S ...

  7. python科学计算

    windows下python科学计算库的下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/(由于C运行库的问题,scipy在linux下可以用pip安装,而 ...

  8. 贝叶斯推断之最大后验概率(MAP)

    贝叶斯推断之最大后验概率(MAP) 本文详细记录贝叶斯后验概率分布的数学原理,基于贝叶斯后验概率实现一个二分类问题,谈谈我对贝叶斯推断的理解. 1. 二分类问题 给定N个样本的数据集,用\(X\)来表 ...

  9. AndroidStudio替换空行

    (1)在Edit Replace In Path输入框中输入:^\s*\n (\s代表任何空白字符,\S代表任何非空白字符,*代表任意个数,\n匹配换行符) (2)Replace With输入框的值为 ...

  10. java保留字

    //*********java保留字 //*********访问控制 private //私有 protected //受保护 public //公共 //*********类.方法和变量修饰符 ab ...