pyodbc - problem passing None as parameter

Frank Millman frank at chagford.com
Fri Oct 23 05:16:32 EDT 2009


Tim Goldenwrote:
> Frank Millman wrote:
>>
>> I want the final WHERE clause to show 'WHERE todate IS NULL'.
>
> Of course, I understand that. What I mean is that if a piece
> of SQL say:
>
>  WHERE table.column IS ?
>
> then the only possible (meaningful) value ? can have is
> NULL (or None, in python-speak). In fact, the IS NULL is
> really a sort of unary operator-expression, not an operator
> with a value.
>

>>
>> As a workaround, I suppose I could scan the argument list, and if I find 
>> a None, substitute the ? with NULL in the SQL statement itself.

>
> Well, the code I posted previously, although tedious taken to
> extremes, will do that. (I have seen and used code like that in a number 
> of production systems).
>

Thanks, Tim, for the detailed explanation. I appreciate your taking the 
time.

It was difficult for me to use the code that you posted, because under my 
present setup I define my SQL statements externally, and the WHERE clause 
has to conform to one or more rows of six columns -
    Test (WHERE or AND or OR)
    Left bracket (either present or blank)
    Column name
    Operator
    Expression
    Right bracket (either present or blank)

I therefore used the workaround that I mentioned above, and it seems to work 
fine, for both pyodbc and psycopg2.

Once again, many thanks.

Frank






More information about the Python-list mailing list