1
我试图重现类似Djangos的模型在PHP中的类。我想知道django如何处理模型表中的加载和保存条目。django如何处理从数据库中获取数据?
例如,调用Person.objects.all()
(Person
是当然的django.db.models.Model
子类)的情况下,我期望的Django执行SQL查询,SELECT * FROM myapp_person
,例如,然后从查询收到的数据变换到模型 - 的实例类。它是否正确?然后,
- 不能导致内存溢出时,有太多的条目,或有没有办法Django处理这种副作用?
- 当调用
Person.objects.filter(name="Paul")
我希望Django执行一个SQL查询如SELECT * FROM myapp_person WHERE name = 'Paul'
,但如果之前调用了Person.objects.all()
? django缓存它们还是只是为每个调用执行请求?
您是想了解Django的ORM,还是想在PHP中复制它?如果这是后者,你看过PHP ORM如Doctrine吗? – 2012-03-06 21:50:55
这里有一些很好的见解https://docs.djangoproject.com/en/dev/topics/db/queries/。顺便说一句我认为FLOW3也有一个ORM。 – Jingo 2012-03-06 21:52:53
不知道幕后的所有内存管理,但至于第二个问题,Django只在使用对象时才调用数据库,就像在循环中一样。你可以输入'p = Person.objects.all()',然后输入p.filter(name =“Paul”)',而且Django还没有打到数据库。一旦你使用了QuerySet,'对于p:...中的p1',它最终命中数据库并获取记录来填充QuerySet对象。 – Furbeenator 2012-03-07 00:16:27