Hi,

Malcolm Tredinnick wrote:
> In passing, moving the query construction out of QuerySet, particularly
> if we move the database access portions out as well, will make
> integrating with SQLAlchemy easier -- since it's "just another data
> storage backend".

If you make it a design goal, yes. But I'd think that a generic
pluggable "data storage backend" together with your own backend is much
harder to get right than directly plugging in SQLAlchemy.

> I'm really not against SQLAlchemy in any way -- quite
> a happy user of it, in fact -- I'm just not convinced it's needed by
> default in Django, but I'd be happy to see it as an option.

QuerySet does currently not really have a concept of joins. I mean, it
can handle joins to some extent, but it does not have an understanding
that goes above knowing the SQL syntax. It does not understand table
aliases, multiple joins to the same table, different join types, join
conditions.

I fear that the problems in some of the tickets I mentioned are not
really solvable without such a concept. But this would need a lot of
efforts and be more or less a rewrite of QuerySet. I'm usually quite
capable of fixing the bugs in Django that itch me, but I haven't found a
solution for these.

Another point is that you'll get more and more change requests, for
things like aggregates, sorting by functions, outer joins, composite
primary keys. At some time you'll need to define how far Django will go
and put a stop to this. But how can you justify it within the python
community when there's something like SQLAlchemy around?

Batteries included is nice, but, hey, Django does not implement the
database backend, either. It does not implement the fast-cgi interface.
In my opinion, the strength of Django vs. TurboGears/Pylons is that it
has documented everything in one place, plus the coherent API. The
dependencies are a minor point. You don't need to give this up when you
integrate SQLAlchemy just for SQL construction. This is similar to the
SQL backend and flup: They usually don't turn up in your code, only when
you actually need them.

Michael


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to