sqlstring -- a library to build a SELECT statement
Jason Stitt
jason at pengale.com
Thu Oct 20 10:52:45 EDT 2005
On Oct 19, 2005, at 11:55 PM, grunar at gmail.com wrote:
>
> Jason Stitt wrote:
>
>>
>> Using // for 'in' looks really weird, too. It's too bad you can't
>> overload Python's 'in' operator. (Can you? It seems to be hard-coded
>> to iterate through an iterable and look for the value, rather than
>> calling a private method like some other builtins do.)
>>
>
> // was a bit of a stretch. I'd initially thought it for the "where"
> clause, becuase it's lower precedence than ** (I think), and really
> late at night // kind of looks like a W. I decided against it because
> it looks to close to a comment in some other languages.
>
> Python "in" clause doesn't seem exploitable in any way--probably a
> good
> thing. I did add a "in_" method (name is arguable), which does the
> same thing, also a not_in.
What about modifying the overloaded == to produce 'in' if the right-
hand side is a list? Then you can more easily generate statements
dynamically:
def makeCond(name):
return someOtherCond & (model.table.name == name)
makeCond("foo")
makeCond(["foo", "bar"])
And it doesn't require two different functions.
As long as there is no case where you might actually want to test if
a column value equals a list, it should work. Is there? Some DBs
support an Array type, but in general that might be better handled
with an Array class, anyway.
- Jason, fingers crossed that all this black magic doesn't affect
one's chances in the afterlife ;)
More information about the Python-list
mailing list