That is just one of the very small reasons out of the entire haystack.... the advantages of an ORM are much too numerous to even begin to account....
I do not think circular references are a bad thing... it is a pointer after all... one thing I miss from C programming is the ability to control pointer vs. copy! SQLAlchemy does an amazing job at state management, and I have yet run into a situation where circular references could even remotely cause issues. It really depends on your application though. Use the right tool for the right job. The DAL has its advantages, the biggest of which is memory consumption and function calls when querying large datasets. An ORM will grow exponentially in memory usage as you add more objects. The DAL keeps a linear memory growth as expected, so when you need lots of data its very efficient and the effects can be noticed even with as few as 5000 records. It also depends on the programmer. I had OOP concepts ingrained from the beginning (Java was my first programming language I learned)... so obviously SQLAlchemy would feel much more natural to me. That said, I actually do use the standalone DAL in some scripts that process data for my app that has 73 models (it used to have 50, but I have been busy the last couple of months). The reason is because for batch processing analytics for some of my tables, the DAL is the right tool for the job, and using an ORM makes the process take about 2-3 hours as opposed to 30-45 minutes. -- Thadeus On Wed, Jan 26, 2011 at 3:40 PM, VP <vtp2...@gmail.com> wrote: > >>. there is a real difference > >> in maintaining 70+ models in web2py vs SQLAlchemy... especially when > these > >> models need to be shared between external scripts. > > Is this because DAL has not support for circular dependencies and > SQLAlchemy does? > > But seriously, I think an application with 70+ models is entirely in a > different class of applications. >