[Zope3-dev] Re: [Zope-DB] Relational Databases in Zope 2 and
charlie at egenix.com
Tue Jun 29 03:21:02 EDT 2004
On 2004-06-28 at 16:47:51 [+0200], Luciano Ramalho <ramalho at hiper.com.br>
> On Monday 28 June 2004 09:12, Charlie Clark wrote:
> > Will definitely want to drop <dtml-sqlgroup>, <dtml-sqltest> and such like
> > as these do not encourage good SQL programming.
> How is it that <dtml-sqlgroup> and <dtml-sqltest> do not encourage good SQL
> From my experience these commands allow developers to save countless hours
> creating very error-prone and hard-to-debug procedures for assembling SQL.
> <dtml-sqlgroup> and <dtml-sqltest> on the other hand change this procedural
> chore to high level "declarative"-like programming.
> I can't see how this is bad, but I am always eager to learn and if anyone
> point me to articles explaining why these very useful commands should be
> dropped, I will look deeper into it.
Well, judging by the traffic on the Zope-DB list since I've been on it
opinions on this are divided but I think the majority of those in the
relational world are *strongly* against <dtml-sqltest> and <dtml-sqlgroup>.
They do not add functionality as they replicate SQL and introduce obscurity
as a result. While SQL has lots of problems it is important that those using
it really understand what they are writing *and* reading. If you have to be
able to understand the resultant rendered SQL you should by definition be
able to write it in the first place. And then there is the issue of
maintenance - other people might have to read your code!
That said - it is obvious some people will want to keep <dtml-sql> because
they are comfortable, happy and productive with it. So ZSQL methods will grow
some options to suit coding style.
There remains the issue of it would be nice to have some way of controlling
SQL statements so that code reuse in the sense of string reuse is possible,
ie. mixing in conditions or joins when appropriate. A TALES/METAL approach to
this seems to me complimentary to current SQL but this discussion is only
More information about the Zope-DB