MongoPie是个轻量级的开源python mongodb mapping. 目的是使用Object-Relational Mapping 类似的技术简化mongodb的编程,可以通过继承Model来实现mongodb 的schema.
比如,我们要实现一个简单的标签系统,首先定义Model
class UserTag(mongopie.Model):
''' 用户的标签云 '''
user = mongopie.StringField()
tag = mongopie.StringField()
count = mongopie.IntegerField(default=0)
class Vote(mongopie.Model):
''' 一次投票,voter在created_at时间给votee的tag标签投了一票'''
voter = mongopie.StringField()
votee = mongopie.StringField()
tag = mongopie.StringField()
created_at = mongopie.DateTimeField(auto_now=True)
定义好Model后,可以通过方法实现两个类的关联,Vote对象有个on_created方法, 在每个Vote对象被创建并放在数据库后会自动调用. 重载此方法
class UserTag(mongopie.Model):
......
@classmethod
def add_tag(cls, vote):
ut = cls.find_one(user=vote.votee,
tag=vote.tag)
if not ut:
ut = cls()
ut.user = vote.votee
ut.tag = vote.tag
ut.count += 1
ut.save()
return ut
class Vote(mongopie.Model):
......
def on_created(self):
UserTag.add_tag(self)
这样每当一个投票产生后,UserTag对应的count会加一.
def make_vote(voter, votee, tag):
v = Vote()
v.voter = voter
v.votee = votee
v.tag = tag
v.save()
return v
def test():
# Tom 给Jack的hacking 投了一票
make_vote('Tom', 'Jack', 'Hacking')
# Jerry 给Jack的Food 投了一票
make_vote('Jerry', 'Jack', 'Food')
# Jerry 也给Jack的Hacking投了一票
make_vote('Jerry', 'Jack', 'Hacking')
for ut in UserTag.find(user='Jack'): # 找出Jack所有的投票
print ut.get_dict()
#输出结果是
{'count': 2, '_id': ObjectId('4eecbce5347307034e000001'), 'tag': u'Hacking', 'user': u'Jack'}
{'count': 1, '_id': ObjectId('4eecbce5347307034e000003'), 'tag': u'Food', 'user': u'Jack'}
完整的实例请看 mongopie_test.py
开源项目地址在
https://github.com/superisaac/mongopie
分享到:
相关推荐
在Python中,MongoDB Object Data Mapping (ODM) 是一种将数据模型转换为MongoDB文档的技术,它允许开发者以面向对象的方式操作数据库,提高了代码的可读性和可维护性。本文将深入探讨μMongo,一个支持同步和异步...
MongoDB ORM,即Object-Document Mapping,是将数据库中的文档结构映射到Python对象的一种机制。这允许开发者使用面向对象的方式来处理数据,无需关心底层的文档格式。`mongo-thingy`就是这样一种工具,它为Pymongo...
8.1 OBJECT PARADIGM AND PYTHON 139 8.2 EXPLORING THE JARGON 140 8.3 CREATING CLASSES 142 8.4 INHERITANCE 145 8.5 SPECIAL METHODS 149 8.5.1 Create a New Data Type Using a Built-in Data Type 154 8.6 ...
为了实现Java EE应用程序与MongoDB数据库的有效连接,可以利用Hibernate作为JPA提供者,通过Hibernate OGM (Object Grid Mapping) 服务器作为中间件,将Java EE应用程序连接到MongoDB数据库(见图1)。Hibernate OGM...
MongoEngine是一个针对Python的文档型数据库ORM(Object-Relational Mapping)库,它允许开发者以面向对象的方式操作MongoDB数据库。本教程通过构建一个简单的微博客应用,介绍MongoEngine的基本用法。 首先,安装...
2. **ODM (Object Document Mapping)**: 对象文档映射工具,如Mongoose(Node.js),将数据库操作与对象模型结合,简化开发。 3. **数据迁移**: 可以使用工具如`mongoimport`、`mongoexport`导入和导出数据,便于...
书中展示了如何在不同编程语言中集成MongoDB,以及ODM(Object Document Mapping)的概念。 这两版指南,尤其是第二版,全面覆盖了MongoDB从基础到高级的所有关键知识点,无论你是初学者还是经验丰富的开发者,都能...
首先,我们来看“mongodol”这个名字,它可能是“MongoDB Object to Document ORM Library”的缩写,暗示这是一个面向对象到文档的ORM(Object-Relational Mapping)库,用于简化Python与MongoDB之间的交互。...
1. **SQLAlchemy**:ORM(Object-Relational Mapping)的概念及使用方法。 2. **MySQL/PostgreSQL**:连接数据库、执行SQL语句、事务处理、存储过程等。 3. **NoSQL数据库**:MongoDB 的基本操作,包括文档的增删改...
在Pylons中集成MongoDB,我们可以利用Ming ORM(Object-Relational Mapping),这是一个专门为MongoDB设计的Python ORM库。 首先,我们需要在`PROJECT/model/__init__.py`文件中定义MongoDB的初始化函数和映射对象...
Django自带ORM(Object-Relational Mapping)系统,可以方便地与数据库交互。 7. 反爬策略:京东和其他大型电商平台通常有反爬机制,如IP限制、User-Agent检测等。因此,需要了解如何设置代理IP,更换User-Agent,...
ORM(Object-Relational Mapping)如SQLAlchemy和Django ORM提供了面向对象的方式来操作数据库。还有轻量级的ORM库如Pony ORM和peewee。对于NoSQL数据库,如Redis、MongoDB和Neo4j,Python也有相应的驱动库。 **...
mongoengine是一个强大的ORM(Object-Relational Mapping)库,它为Python程序员提供了一种与MongoDB交互的方式,类似于SQL数据库中的ORM工具。通过mongoengine,开发者可以使用Python类来定义数据模型,这些类与...
aldjemy库是一个基于SQLAlchemy的 ORM(Object-Relational Mapping)工具,它的主要目标是为Tornado框架提供与SQLAlchemy的无缝集成。SQLAlchemy是Python中广泛使用的数据库抽象层,它允许开发者使用面向对象的方式...
作为一个全栈框架,TG2包含了一系列关键组件,如模板引擎(如Mako或Jinja2)、ORM(Object-Relational Mapping)工具(如SQLAlchemy),以及用于处理HTTP请求和响应的中间件。这些组件协同工作,提供了构建Web应用所...
Python的ORM(Object-Relational Mapping)库如SQLAlchemy或Peewee被用于与数据库进行交互。 2. **视图(Views)**:视图是处理用户请求并返回响应的部分。它们通常与URL路由结合,根据用户的请求调用相应的函数。 ...
ORM(Object Relational Mapping)**:对象关系映射,是一种编程技术,用于将对象模型与关系型数据库之间的数据进行转换。 **5. MongoEngine**:一个用于操作MongoDB的ORM框架,提供了一个简洁而强大的API来处理...
ORM(Object-Relational Mapping)库如SQLAlchemy或Mongoose简化了数据库操作。 6. 安全性考虑 - 参数校验:服务端应对所有接收到的参数进行合法性校验,防止SQL注入等安全问题。 - 加密传输:使用HTTPS协议确保...
MongoEngine是Python的一个ODM(Object-Document Mapping)库,它是MongoDB的驱动程序,用于简化对MongoDB数据库的操作。通过MongoEngine,开发者可以使用Python对象来代表数据库文档,使得数据操作更加直观和方便。...
`SQLAlchemy`是Python的ORM(Object-Relational Mapping)框架,它允许开发者使用面向对象的方式来操作数据库。通过ORM,我们可以将数据库操作转换为Python对象的操作,简化了数据库编程。安装SQLAlchemy的命令是`...