zoukankan      html  css  js  c++  java
  • MongoEngine 中文文档 系列教程 User Guide( 三)

    Document实例

    创建一个新的document对象,创建一个相关document类的实例,可以在字段的构造器中赋值。你可以在任何document里面的字段设置值;

    [python] 
     
    1. >>> page = Page(title="Test Page")  
    2. >>> page.title  
    3. 'Test Page'  

    你可以使用基础对象属性的语法来赋值: 

    [python] 
     
    1. >>> page.title = "Example Page"  
    2. >>> page.title  
    3. 'Example Page'  

    保存和删除Document 
    mongoengine在有效保存的时候会追踪document里面的变化。保存数据到数据库中,使用save() 方法。如果该document在数据库里面不存在,则会创建相应的document,如果已存在,则会应该用document中的更改:

    [python] 
     
    1. >>> page = Page(title="Test Page")  
    2. >>> page.save()  # Performs an insert  
    3. >>> page.title = "My Page"  
    4. >>> page.save()  # Performs an atomic set on the title field.  

    串联保存 
    如果你的document里面包含   ReferenceField 或者GenericReferenceField 对象,默认情况下使用save() 方法时会自动应用这些引用的document的变化,如果你不需要这个特性,可以把cascade 设置为 False。  

    删除Document

    删除document的时候,使用delete() 方法。它只在这个document存在的时候有效。

    Document ID

    数据库里面的没一个Document都有一个唯一的ID。这个可以通过Document的id属性来访问。通常,这个ID是由数据库在数据保存的时候自动生成的,这意味着你只能访问那些已经保存了的document的id。

    [python] 
     
    1. >>> page = Page(title="Test Page")  
    2. >>> page.id  
    3. >>> page.save()  
    4. >>> page.id  
    5. ObjectId('123456789abcdef000000000')  


    或者,你可以通过在字段构造器里面设置 primary_key=True  来指定自己的一个字段来作为主键。这种情况下,mongoengine会使用这个指定的字段作为id 。事实上,id只是你指定的主键字段的别名,你仍然可以把id 当作主键来使用:

    [python]
     
    1. >>> class User(Document):  
    2. ...     email = StringField(primary_key=True)  
    3. ...     name = StringField()  
    4. ...  
    5. >>> bob = User(email='bob@example.com', name='Bob')  
    6. >>> bob.save()  
    7. >>> bob.id == bob.email == 'bob@example.com'  
    8. True  

    你也可以使用document 的 pk 字段来访问 id ,它是id 的别名:

    [python]
     
      1. >>> page = Page(title="Another Test Page")  
      2. >>> page.save()  
      3. >>> page.id == page.pk  
  • 相关阅读:
    Notes of Daily Scrum Meeting(12.18)
    Notes of Daily Scrum Meeting(12.17)
    Notes of Daily Scrum Meeting(12.16)
    Notes of Daily Scrum Meeting(12.8)
    Notes of Daily Scrum Meeting(12.5)
    Notes of Daily Scrum Meeting(12.3)
    Notes of Daily Scrum Meeting(11.12)
    Linux中profile、bashrc、bash_profile之间的区别和联系
    Linux GCC编译
    mysql 5.7.16 远程连接
  • 原文地址:https://www.cnblogs.com/fillim/p/4864527.html
Copyright © 2011-2022 走看看