장고를 위한 파이몽고 vs 몽고 엔진.
저는 프로젝트 중 하나로 장고+몽고를 선호했습니다.
왜 제가 파이몽고뿐만 아니라 몽고엔진을 사용해야 합니까?장점은 무엇입니까?PyMongo로 쿼리하면 이미 객체인 결과를 얻을 수 있습니다. 그렇지 않나요?그렇다면 Mongo Engine의 목적은 무엇일까요?
이것은 오래된 질문이지만, 저는 받아들여진 대답이 그 질문에 답하지 않는다고 생각합니다.질문은 "MongoEngine이란 무엇인가?"가 아니라 "MongoEngine을 왜 사용해야 하는가?"였습니다.그리고 그러한 접근법의 장점.이는 장고를 넘어 일반적으로 파이썬/몽고로 넘어갑니다.내 2센트야.
PyMongo와 MongoEngine 모두 객체를 반환하지만 PyMongo는 문자열로 키를 참조해야 하는 사전을 반환합니다.MongoEngine을 사용하면 문서 데이터의 클래스를 통해 스키마를 정의할 수 있습니다.그런 다음 문서를 해당 클래스에 매핑하고 사용자가 문서를 조작할 수 있도록 합니다.스키마가 없는 데이터에 대해 스키마를 정의하는 이유는 무엇입니까?왜냐하면 제 생각에는, 그것은 분명하고, 분명하고, 반대로 프로그래밍하기 훨씬 쉽기 때문입니다.실제로 데이터를 보거나 프로그램을 실행하지 않고는 사전이 코드에 무엇이 있는지 알 수 없는 상태로 코드에 흩어져 있지 않습니다.MongoEngine과 PyCharm과 같은 괜찮은 IDE의 경우 객체 뒤에 간단한 "."를 입력하면 자동 완성을 통해 알아야 할 모든 것을 알 수 있습니다.또한 다른 개발자들이 작업하는 동안 데이터 모델을 검사하고 학습하는 것이 훨씬 쉬우며 한동안 코드를 보지 못했던 사람들을 더 생산적이고 빠르게 만들 것입니다.
또한 PyMongo(몽고 콘솔과 본질적으로 동일)로 문서를 조작하는 데 사용되는 구문은 보기 흉하고 오류가 발생하기 쉬우며 유지 관리가 어렵습니다.
다음은 MongoEngine의 문서를 업데이트하는 기본적인 예이며, 저에게는 매우 우아합니다.
BlogPost.objects(id=post.id).update(title='Example Post')
왜 PyMongo를 사용합니까?MongoEngine은 당신과 베어메탈 사이의 레이어이기 때문에 벤치마크는 없지만 아마 더 느릴 것입니다.파이몽고는 레벨이 낮아서 자연스럽게 더 많은 통제력을 갖게 됩니다.단순 프로젝트의 경우 MongoEngine이 필요하지 않을 수 있습니다.만약 당신이 이미 Mongo 구문에 능통하다면, PyMongo는 저보다 훨씬 직관적이고 복잡한 쿼리와 업데이트를 작성하는 데 문제가 없을 것입니다.아마도 당신은 더 낮은 수준의 사전으로 직접 작업하는 것을 즐기고 추가적인 추상화 계층에는 관심이 없을 것입니다.아마도 당신은 큰 시스템의 일부가 아닌 스크립트를 작성하고 있을 것입니다. 그리고 가능한 한 얇고 빠르게 작성해야 합니다.
논쟁에는 더 많은 것이 있지만, 저는 그것이 기본적으로 꽤 좋다고 생각합니다.
당신은 Mongo Engine의 클레임을 읽지 않은 것 같습니다.
MongoEngine은 Python의 MongoDB와 함께 작업하기 위한 Document-Object Mapper(ORM이라고 생각하지만 문서 데이터베이스의 경우)입니다.
이것이 기본적으로 모든 것을 말해줍니다.
게다가: 피몬고가 물건을 배달할 것이라는 당신의 주장은 잘못된 것입니다….음 파이썬에서는 모든 것이 객체입니다 - 심지어 딕트도 객체입니다...따라서 응용프로그램 수준에 정의된 사용자 지정 클래스를 갖는다는 의미에서는 사실이지만 그렇지 않습니다.
PyMongo는 MongoDB API를 Python으로 래핑하고 JSON을 안팎으로 전달하는 하위 수준 드라이버입니다.
MongoEngine 또는 MongoKit와 같은 다른 계층은 MongoDB 기반 데이터를 네이티브 Python 데이터베이스 드라이버 + SQL 화학을 ORM으로 매핑합니다.
아마도 너무 늦었을 것이지만, 장고+몽고를 시도하는 다른 사람들에게 장고-논렐은 고려할 가치가 있습니다.
mongoengine은 pymongo 드라이버를 사용하여 mongodb에 연결합니다.
만약 당신이 장고에 익숙하다면..몽고 엔진을 사용합니다.
언급URL : https://stackoverflow.com/questions/5712857/pymongo-vs-mongoengine-for-django
'programing' 카테고리의 다른 글
워드프레스에서 레이저페이 결제 게이트웨이를 통합하는 방법 (0) | 2023.07.03 |
---|---|
Mongoose - 그룹화 및 채우기 방법 (0) | 2023.07.03 |
HTML 테이블을 Excel로 내보낼 때 UTF-8 인코딩 (0) | 2023.07.03 |
시스템. 웹.Http.Authorize 대 System.웹.MVC.권한을 부여하다 (0) | 2023.07.03 |
Git 클론 직후 수정된 것으로 표시되는 파일 (0) | 2023.07.03 |