나는 MongoDB and Pyramid에 대한 피라미드 요리 책 지침을 따랐지만 데이터베이스 쿼리를 request.db
에 링크하는 것으로 보인다. 클래스 메서드 내에서 호출 할 수있는 연결을 열려면 어떻게해야합니까?피라미드에서 뷰 외부에서 MongoDB 연결에 액세스하려면 어떻게해야합니까?
내 프로젝트의 개체에 대해 실제 베어 본 시리얼 라이저를 설정하려고합니다. 내 프로젝트 데이터를 처리하기 위해 내 resources/
폴더에 여러 클래스 정의가 있습니다. 이 객체들 각각에 .save()
과 .find()
메쏘드를 (mongoengine
과 유사하게) 객체의 데이터를 사전으로 변환하고 pymongo
을 사용하여 MongoDB에 저장하는 자급 적 방법을 제공하고 싶습니다.
pymongo
을 사용하여 MongoDB에 연결하기에 충분합니다. 당신이해야 할 일은 MongoClient
입니다. 문제는 개체를 인스턴스화하거나 클래스를 호출 할 때마다 새 연결을 열지 않으려한다는 것입니다. 하나의 연결을 달걀의 main()
함수에서 만들고 싶습니다. 필요한 시점에 액세스 할 수 있습니다 (보기에서 request.db
처럼).
필자는 분명히 피라미드의 새로운 제품이므로 어떤 도움도 받으실 수 있습니다. 미리 감사드립니다.
스레딩이 작동 할 때이 메서드는 예측할 수없는 방식으로 중단되므로 threadlocal 개체를 사용하고 싶습니다. 요리 책 응답이 훨씬 뛰어납니다. 이렇게하면 요청을 모델로 전달해야하지만 대부분의 경우 문제가되지 않으므로 테스트 가능성이 높아집니다. –
pymongo의 MongoClient는 스레드로부터 안전하며 실제로 연결 풀 역할을합니다. [링크] (http://api.mongodb.org/python/current/faq.html#how-does-connection-pooling-work-in-pymongo) –