#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Created on 2017年10月19日
@author: zzy
'''
from mongoengine import * #连接数据库
def lazy_connect():
#mongodb://dbuser:sa123@192.168.1.58:27017/db_datacn
connect('db_datacn', host='mongodb://192.168.1.58/', username='dbuser', password='sa123') lazy_connect() # Defining our documents
# 定义文档user,post,对应集合user,post
class User(Document):
email = StringField(required=True)
first_name = StringField(max_length=50)
last_name = StringField(max_length=50) #Embedded documents 嵌入的文件,it doesn’t have its own collection in the database
class Comment(EmbeddedDocument):
content = StringField()
name = StringField(max_length=120) class Post(Document):
title = StringField(max_length=120, required=True)
# ReferenceField相当于foreign key
author = ReferenceField(User, reverse_delete_rule=CASCADE)
tags = ListField(StringField(max_length=30))
comments = ListField(EmbeddedDocumentField(Comment))
#允许继承
meta = {'allow_inheritance': True} #Post的子类
class TextPost(Post):
content = StringField() #Post的子类
class ImagePost(Post):
image_path = StringField() #Post的子类
class LinkPost(Post):
link_url = StringField() def save_user():
# john = User(email='john@example.com')
# john.first_name = 'john'
# john.last_name = 'cvsh'
# john.save()
#
# ross = User(email='ross@example.com')
# ross.first_name = 'Ross'
# ross.last_name = 'Lawley'
# ross.save()
#
# post1 = TextPost(title='Fun with MongoEngine', author=john)
# post1.content = 'Took a look at MongoEngine today, looks pretty cool.'
# post1.tags = ['mongodb', 'mongoengine']
# post1.save()
#
# post2 = LinkPost(title='MongoEngine Documentation', author=ross)
# post2.link_url = 'http://docs.mongoengine.com/'
# post2.tags = ['mongoengine']
# post2.save() # for post in Post.objects:
# print(post.title)
#
# for post in TextPost.objects:
# print(post.content)
#
# for post in Post.objects:
# print(post.title)
# print('=' * len(post.title))
# if isinstance(post, TextPost):
# print(post.content)
# if isinstance(post, LinkPost):
# print('Link: {}'.format(post.link_url))
Post.objects(tags='mongoengine').update(tags=['abc',''])
for post in Post.objects.all():
#for post in Post.objects(tags='mongoengine'):
print(post.title)
#Post.objects(tags='mongodb').delete() num_posts = Post.objects(tags='mongodb').count()
print('Found {} posts with tag "mongodb"'.format(num_posts)) if __name__ == '__main__':
save_user()

mongoengine使用示例的更多相关文章

  1. pymongo和mongoengine安装和使用教程 包含常用命令行和代码示例 | pymongo and mongoengine tutorial on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/e88f04e5/,欢迎阅读最新内容! pymongo and mongoengine tutorial on ubuntu 16. ...

  2. python操作三大主流数据库(9)python操作mongodb数据库③mongodb odm模型mongoengine的使用

    python操作mongodb数据库③mongodb odm模型mongoengine的使用 文档:http://mongoengine-odm.readthedocs.io/guide/ 安装pip ...

  3. python通过mongoengine中connect函数连接多个数据库

    mongoengine支持程序同时连接多个数据库,这些数据库可以位于一个或多个mongo之中,通过alias名称区分不同的连接即可. 可以通过switch_db切换到不同的数据库,进行读写操作,swi ...

  4. 实验2、Flask模板、表单、视图和重定向示例

    实验内容 1. 实验内容 表单功能与页面跳转功 能是Web应用程序的基础功能,学习并使用他们能够更好的完善应用程序的功能.Flask使用了名为Jinja2的模板引擎,该引擎根据用户的交互级别显示应用程 ...

  5. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  6. .NET跨平台之旅:将示例站点升级至 ASP.NET Core 1.1

    微软今天在 Connect(); // 2016 上发布了 .NET Core 1.1 ,ASP.NET Core 1.1 以及 Entity Framework Core 1.1.紧跟这次发布,我们 ...

  7. 通过Jexus 部署 dotnetcore版本MusicStore 示例程序

    ASPNET Music Store application 是一个展示最新的.NET 平台(包括.NET Core/Mono等)上使用MVC 和Entity Framework的示例程序,本文将展示 ...

  8. WCF学习之旅—第三个示例之四(三十)

           上接WCF学习之旅—第三个示例之一(二十七)               WCF学习之旅—第三个示例之二(二十八)              WCF学习之旅—第三个示例之三(二十九)   ...

  9. JavaScript学习笔记(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例

    一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...

随机推荐

  1. hive函数

    内置函数 测试各种内置函数的快捷方法: 1.创建一个dual表 create table dual(id string); 2.load一个文件(一行,一个空格)到dual表 3.select sub ...

  2. 02-17 位图验证码(一般处理程序)+AJAX

    建立一个空网站,在设计界面工具箱中拖入一个TextBox工具,一个按钮,外加一个Image图片工具(充当数字.字母以图片形式).但是这样做出来的验证码会出现一个问题,每当点击一下按钮,界面自动提交一遍 ...

  3. Autofac 4 netcore with config demo

    Autofac 4+以上和以前的配置不一样的,最近在NetCore中做项目,得到实例时折腾了一番. 使用场景,用autofac实例化数据库类型,避免一个个的去new json配置文件: <?xm ...

  4. linux内核中task_struct与thread_info及stack三者的关系

    在linux内核中进程以及线程(多线程也是通过一组轻量级进程实现的)都是通过task_struct结构体来描述的,我们称它为进程描述符.而thread_info则是一个与进程描述符相关的小数据结构,它 ...

  5. pl/sql基础语法

  6. 本博文将一步步带领你实现抽屉官网的各种功能:包括登陆、注册、发送邮箱验证码、登陆验证码、页面登陆验证、发布文章、上传图片、form验证、点赞、评论、文章分页处理以及基于tronado的后端和ajax的前端数据处理。

    本博文将一步步带领你实现抽屉官网的各种功能:包括登陆.注册.发送邮箱验证码.登陆验证码.页面登陆验证.发布文章.上传图片.form验证.点赞.评论.文章分页处理以及基于tronado的后端和ajax的 ...

  7. 因浏览器而异的空白节点(js清除空白节点)

    先看下面的代码:<dl id="dll">  <dt>title</dt>  <dd>definition</dd>&l ...

  8. 安装 Windows Service

    1.打开 VS 命令行窗口 2. installutil /u  service文件路径  (卸载原有服务) 3, installutil /i  service 文件路径 (安装服务)

  9. docker-compose之Nginx+Tomcat代理配置

    Tomcat镜像制作与启动 Dockerfile如下 FROM docker.io/sssllc/centos7.-jdk1. #update RUN yum -y update; yum clean ...

  10. 虚拟机安装CentOS以及SecureCRT设置【完美无错版】

    一.CentOS简介 CentOS是Linux的发行版之一,它安全.稳定.高效,是我最喜欢的Linux发行版之一.CentOS根据Red Hat Enterprise Linux开放源代码编译而成,与 ...