problem with single-item lists and IN operator
Karsten Hilbert <[email protected]> Tue, 4 Nov 2003 03:39:16 +0100
| Newsgroups | gmane.comp.python.db.pypgsql.user |
|---|---|
| Message-ID | <[email protected]> |
Hi,
I am trying to use the IN operator with a tuple of length 1
(no, I can't change to = since I don't know in advance whether
the tuple will be of size 1 or longer).
If I simply pass the tuple to cursor.execute() it gets
unrolled producing one of two errors:
if length == 1:
select * from ... where ... IN scalar_value;
if length > 1:
Exception: not all arguments converted
If I wrap the tuple in another tuple or list of length 1, eg.
(my_tuple,) or [my_tuple] then cursor.execute does recognize
that it is supposed to build a list suitable for IN. However,
this fails with tuples of size 1:
select * from ... where ... IN (scalar_value,);
tuples with size > 1 work fine:
select * from ... where ... IN (scalar, scalar);
I did upgrade to 2.4 since the changelog said something about
a fix to the parameter handling concerned with IN operators.
That didn't help, unfortunately.
And this line in PgSQL -> cursor.execute() seems to be the
root of the evil:
self.res = self.conn.conn.query(_qstr % parms)
What am I to do ?
Karsten
--
GPG key ID E4071346 @ wwwkeys.pgp.net
E167 67FD A291 2BEA 73BD 4537 78B9 A9F9 E407 1346
-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive? Does it
help you create better code? SHARE THE LOVE, and help us help
YOU! Click Here: http://sourceforge.net/donate/