未知
项目描述
EasyCouch - python-couchdb的ORM封装。
创建这个封装的主要原因是需要重新思考与文档型数据库的交互方式。现有的解决方案在很大程度上模仿了关系型数据库的存储和访问方式,其中数据模式的概念至关重要。与关系型数据库不同,CouchDB允许自由地操作文档结构,这带来了一些优势。例如,同一个框架的不同扩展可以共享同一个数据库文档来存储它们的数据,并且删除扩展不应该导致数据库崩溃,就像安装一样。
使用CouchDB时,描述文档结构(或其部分)的需求仅出于需要将数据转换为字符串以存储在数据库中(编码)以及反向操作(解码)。对于简单类型的数据(str,int,float),Python会为我们处理这些工作,但对于像datetime这样的类型,需要手动进行转换。我认为检查数据是否符合预期是像WTForms这样的表单处理库的工作。
我知道的库没有解决的问题之一是文档的嵌套。这允许将文档的节点作为独立的文档来处理。
示例
======
'''
from easycouch import EasyCouch, Document, InlineDocument
from easycouch.properties import DateTimeProperty
class BlogPost(Document)
created_at = DateTimeProperty(auto_create_now = True)
class Comment(InlineDocument)
created_at = DateTimeProperty(auto_create_now = True)
db = EasyCouch()
db.register_document(BlogPost)
db.register_document(Comment)
p = BlogPost(title = "测试帖子", text = "帖子内容")
p.comments = [
Comment(text = "第一条评论", comments = [Comment(text = "第一条子评论"),]),
Comment(text = "第二条评论")
]
p.save()
p.comments[0].text
=> "First Comment"
p.comments[0].comments[0].created_at
=> datetime.datetime()对象
'''
创建这个封装的主要原因是需要重新思考与文档型数据库的交互方式。现有的解决方案在很大程度上模仿了关系型数据库的存储和访问方式,其中数据模式的概念至关重要。与关系型数据库不同,CouchDB允许自由地操作文档结构,这带来了一些优势。例如,同一个框架的不同扩展可以共享同一个数据库文档来存储它们的数据,并且删除扩展不应该导致数据库崩溃,就像安装一样。
使用CouchDB时,描述文档结构(或其部分)的需求仅出于需要将数据转换为字符串以存储在数据库中(编码)以及反向操作(解码)。对于简单类型的数据(str,int,float),Python会为我们处理这些工作,但对于像datetime这样的类型,需要手动进行转换。我认为检查数据是否符合预期是像WTForms这样的表单处理库的工作。
我知道的库没有解决的问题之一是文档的嵌套。这允许将文档的节点作为独立的文档来处理。
示例
======
'''
from easycouch import EasyCouch, Document, InlineDocument
from easycouch.properties import DateTimeProperty
class BlogPost(Document)
created_at = DateTimeProperty(auto_create_now = True)
class Comment(InlineDocument)
created_at = DateTimeProperty(auto_create_now = True)
db = EasyCouch()
db.register_document(BlogPost)
db.register_document(Comment)
p = BlogPost(title = "测试帖子", text = "帖子内容")
p.comments = [
Comment(text = "第一条评论", comments = [Comment(text = "第一条子评论"),]),
Comment(text = "第二条评论")
]
p.save()
p.comments[0].text
=> "First Comment"
p.comments[0].comments[0].created_at
=> datetime.datetime()对象
'''