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 应用开发,构建高效稳定数据库应用系统
mongodb 数据库基本操作 使用MongoDB Python操作NoSQL数据库
[奥莱理] 基于 MongoDB 的 Python 应用开发 (英文版) [奥莱理] MongoDB and Python Patterns and processes for the popular document-oriented database (E-Book) ☆ 出版信息:☆ [作者信息] Niall O'Higgins ...
通过python语言mongodb数据库惊醒操作,包括连接、上传、下载等操作
MongoDB and Python Patterns and processes for the popular document-oriented database
This tutorial is intended as an introduction to working with MongoDB and PyMongo.
通过python启动mongodb,动态灵活设置mongodb.conf文件,并且实现储存数据和log在程序文件夹下,
mongodb-python
主要是讲python与mongoDB之间的艺术,英文版,英文不好的读起来可能会稍有吃力
python爬虫,Scrapy抓手机App数据并存入MongoDB(今日头条)python爬虫,Scrapy抓手机App数据并存入MongoDB(今日头条)python爬虫,Scrapy抓手机App数据并存入MongoDB(今日头条)python爬虫,Scrapy抓手机App数据...
Python-Flask-MongoDB python-flask+mongodb实现的简单的restful api
txmongo 是 MongoDB 的 Python 异步驱动。兼容 Python 2.6,2.7 和 PyPy。 标签:txmongo
11.4.2 为什么在MongoDB中使用Object ID数据类型?
本教材的内容结合了开发中的经验,并参考了《Python数据库编程》《Python和MongoDB开发指南》《Python数据库编程指南》等书,力求给读者一个清晰简单的示范案例,主要包括MongoDB和传统型数据库对比,MongoDB的常规...
MongoDB基本操作之Python篇 连接数据库 MongoClient VS Connection
MongoDB_and_Python.pdf
mongodb的应用之用python爬取网页内容并用mongodb保存. 由于mongodb是文档型数据库,区别于传统的数据库,它是用来管理文档的。在传统的数据库中,信息被分割成离散的数据段,而在文档数据库中,文档是处理信息的...
azw3 MongoDB and Python Patterns and Niall O'Higgins
python库。 资源全名:celery-mongodb-nobinary-backend-0.0.9.tar.gz