Python용 MongoDB ORM?
sqalchemy(SQLite)에서 mongodb로 이행하려고 합니다.스키마 vertification을 원합니다.mongokit을 보고 있는데, dict가 아니라 오브젝트 속성에서 저장하기 위해 mapper와 비슷한 것을 원합니다.
기존 오브젝트를 수정하지 않고 사용할 수 있도록 맵퍼를 원합니다.
또 다른 옵션은 Mongo Engine입니다.Mongo Engine용 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()
MongoKit도 MongoEngine도 만족하지 못해 Python을 위한 객체 지향 인터페이스를 직접 작성하기로 했습니다.
모든 쿼리를 pymongo에 직접 위임했기 때문에 쿼리 구문은 동일합니다.대부분의 경우, 데이터베이스 연결 풀링, DBRef 지원 및 기타 편리한 방법 등 결과물에 대한 객체 래핑에 불과합니다.
미니몽고라고 하는데 기투브에서 살 수 있어요.해킹을 축하합니다!
예:
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
몽고킷을 원하죠?PyMongo보다 한 층 높은 추상화 층이다.장고를 사용하시는지는 모르겠지만 장고몽고킷 통합도 있습니다.
이 블로그 투고로부터의 예.컴퓨터 인스턴스는 구조가 정의되면 직접 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']},
]
제가 이 질문에 늦은 건 알지만, 저는 Ming http://merciless.sourceforge.net의 저자입니다.Ming http://merciless.sourceforge.net은 SQL Chemy에서 영감을 얻은 MongoDB 검증 및 ORM 엔진입니다.이는 Source Forge에서 사용하는 것으로, http://www.slideshare.net/rick446/rapid-and-scalable-development-with-mongodb-pymongo-and-ming에서 이용할 수 있는 합리적인 프레젠테이션과 SQL Chemy에서 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')
쿼리는 표준 MongoDB 쿼리 구문(Django ORM의 매직 키워드 인수가 아님)을 사용합니다.
WikiComment.query.find(dict(page_id=wp._id))
언급URL : https://stackoverflow.com/questions/2781682/mongodb-orm-for-python
'programing' 카테고리의 다른 글
| Angular에서 분리된 스코프가 없는 명령에서 컨트롤러 함수를 호출합니다.JS (0) | 2023.03.15 |
|---|---|
| 테이블을 드롭하거나 다시 작성하지 않고 Oracle의 특정 위치에 열을 삽입하려면 어떻게 해야 합니까? (0) | 2023.03.15 |
| jQuery.ajax() 요청 헤더 상태가 "304 Not Modified"인지 확인하는 방법 (0) | 2023.03.15 |
| href는 Angular.js에서 ng-click을 덮어씁니다. (0) | 2023.03.15 |
| Jersey 예외 : SERVE : Java 클래스의 메시지 본문 리더 (0) | 2023.03.15 |