1
나는 Djangos의 모델 클래스와 비슷한 것을 재현하려고합니다. 어떻게 장고가로드 및 모델 테이블에서 항목을 저장 처리 궁금 해서요. 예를 들어장고는 데이터베이스에서 데이터를 가져 오는 방법을 어떻게 처리합니까?
Person.objects.all()
(Person
물론 django.db.models.Model
의 서브 클래스 인)를 호출, 나는 장고 예를 들어, SQL 쿼리, SELECT * FROM myapp_person
을 수행 할 것으로 예상하고 모델 -의 인스턴스에 쿼리에서 받았다 데이터를 변환 수업. 이 올바른지? 그런 다음
- 항목이 너무 많거나 장고가 이러한 부작용을 처리하는 방식으로 메모리 오버플로가 발생할 수 있습니까?
Person.objects.filter(name="Paul")
을 호출 할 때 Django가SELECT * FROM myapp_person WHERE name = 'Paul'
과 같은 SQL 쿼리를 수행 할 것으로 예상하지만 이전에Person.objects.all()
이 호출 된 경우 어떻게됩니까? 장고 캐시 또는 그냥 각 호출에 대한 요청을 수행합니까?
Django의 ORM을 이해하려고합니까, 아니면 PHP로 복제 하시겠습니까? 이것이 후자라면 Doctrine과 같은 PHP ORM을 살펴 보았습니까? –
좋은 통찰력은 https://docs.djangoproject.com/en/dev/topics/db/queries/ 여기에 있습니다. Btw 나는 FLOW3도 ORM을 가지고 있다고 생각한다. – Jingo
뒤에서 모든 메모리 관리에 대해 확신 할 수는 없지만 두 번째 질문에 대해서는 장고와 같이 객체를 사용할 때만 장고가 데이터베이스를 호출합니다. 'p = Person.objects.all()'다음에'p.filter (name = "Paul")'을 입력 할 수 있습니다. 아직 Django는 데이터베이스에 접근하지 않았습니다. 일단 당신이 QuerySet을 사용하면,'p1에서 p : ... '로 마침내 데이터베이스를 조회하고 레코드를 가져 와서 QuerySet 객체를 채 웁니다. – Furbeenator