On Sat, Aug 22, 2009 at 3:54 AM, Alan Gauld<alan.ga...@btinternet.com> wrote: > "Kent Johnson" <ken...@tds.net> wrote > >>>> can group a bunch of SQL statements in one place; they're currently >>>> scattered all over the program and it's getting unwieldy). >>> >>> Normally in an OO program the SQL for each class is in the methods for >>> that >>> class. That way any changes to the class canbe easily reflected in the >>> related SQL. >> >> But if all the classes need nearly the same SQL, it may make sense to >> abstract that out to a common location.That is what Serdar is trying >> to do. Duplication is also a bad smell. > > Thats not what he said, he says he wants to collect SQL thats scattered > into one location. And his pseudo code has the classic procedural > case statement to select the right SQL depending on class. He is not > calling a single parameterised piece of SQL... Thats the bad smell.
Ah, right. I was reading more into the OP than was there. I think it does makes sense to keep SQL confined to well-defined locations. This can be per class - each class holds its own SQL - or a single class that does all database access so all SQL and database dependencies are in one place. But in this case if different clients needed different functionality I would make different methods for them. Rather than class DataSources(object): def getdata(self, caller): if caller == 'CallerA': # execute sql for callerA elif caller == 'CallerB': #execute sql for callerB it is reasonable to have class DataSources(object): def getAdata(self): # execute sql for callerA def getBdata(self): #execute sql for callerB etc. Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor