我试图从sqlalchemy(sqlite)转换为使用mongodb.我想要架构顶点.我正在看mongokit,但我想要类似于mappers的东西,以便它可以从对象的属性中保存,而不是dict.
我想要一个映射器,以便我可以使用现有的对象而无需修改它们.
Dav*_*yan 66
另一个选择是MongoEngine.MongoEngine的ORM与Django使用的ORM非常相似.
示例(来自教程):
class Post(Document):
title = StringField(max_length=120, required=True)
author = ReferenceField(User)
class TextPost(Post):
content = StringField()
class ImagePost(Post):
image_path = StringField()
class LinkPost(Post):
link_url = StringField()
Run Code Online (Sandbox Code Playgroud)
sla*_*acy 40
对MongoKit或MongoEngine不满意,我决定为Python编写自己的面向对象的接口.
我将所有查询直接委托给pymongo,因此查询语法也是一样的.大多数情况下,它只是结果的对象包装器,还有一些其他帮助程序,如数据库连接池,DBRef支持和其他便捷方法,可以让您的生活更轻松.
它被称为Minimongo,它可以从github获得.快乐的黑客!
例:
from minimongo import Model, MongoCollection
class MyObject(Model):
model = MongoCollection(database='test', collection='my_collection')
m = MyObject()
m.x = 1
m.field = 'value'
m.other = {'list': True}
m.save()
x = MyObject({'x': 1, 'y': 2}).save()
objs = MyObject.find({'x': 1})
for o in objs:
print o
Run Code Online (Sandbox Code Playgroud)
Rya*_*Cox 29
你想要MongoKit.它是比PyMongo更高的一层抽象.不确定你是否使用Django,但也有django-mongokit集成.
此博客文章的示例.请注意,一旦定义了结构,计算机的实例就可以直接引用make/model(例如atari.make,c64.model,...).不需要字典:
import datetime
from mongokit import Document
class Computer(Document):
structure = {
'make': unicode,
'model': unicode,
'purchase_date': datetime.datetime,
'cpu_ghz': float,
}
validators = {
'cpu_ghz': lambda x: x > 0,
'make': lambda x: x.strip(),
}
default_values = {
'purchase_date': datetime.datetime.utcnow,
}
use_dot_notation = True
indexes = [
{'fields': ['make']},
]
Run Code Online (Sandbox Code Playgroud)
Ric*_*and 15
我知道这个问题我已经迟到了,但我是Ming http://merciless.sourceforge.net的作者,这是一个SQLAlchemy启发的MongoDB验证和ORM引擎.这是我们在SourceForge上使用的内容,并且在http://www.slideshare.net/rick446/rapid-and-scalable-development-with-mongodb-pymongo-and-ming上有一个合理的演示文稿以及一个案例研究从SQLAlchemy迁移到Ming http://www.slideshare.net/__amol__/from-sqlalchemy-to-ming-with-turbogears2.这是Ming中的ORM层示例(来自教程):
class WikiPage(MappedClass):
class __mongometa__:
session = session
name = 'wiki_page'
_id = FieldProperty(schema.ObjectId)
title = FieldProperty(str)
text = FieldProperty(str)
comments=RelationProperty('WikiComment')
Run Code Online (Sandbox Code Playgroud)
查询使用标准的MongoDB查询语法(不是Django ORM的魔术关键字参数):
WikiComment.query.find(dict(page_id=wp._id))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64127 次 |
| 最近记录: |