mike bayer <mike...@zzzcomputing.com> writes:

> I'm not sure what asyncpgs' issue is with input types, there should not be a
> reason to parse the SQL statement and look at operators, you have the Python
> type of object coming in, you use that to determine the general behavior to
> take with basic types like strings and dates.

asyncpg does not parse the SQL statement, and it tries hard to not have to
parse incoming data from the database, even, leaving all that to the PG
engine.

In my example, the column contains a daterange value, and the query I tried
used the @> operator (what the SA .contains() on such type renders to): but as
said in https://github.com/MagicStack/asyncpg/issues/32#issuecomment-254208760
PG has not enough data (you can read that as "has a bug" if you prefer) to
guess the right type, as the @> implements both "daterange contains scalar
date" and "daterange is a superset of another daterange". Explicitly casting
the input value solves the ambiguity.

> So, what you have above is very easy to accomplish with a simple @compiles 
> recipe that merely
> adds CAST to the rendering of bindparam():

Yes, I know, but since I need to tweak the representation of positional
parameters (that is, $1 instead of :1), I had to touch the BIND_TEMPLATES
content. That's why I thought a more generic approach of allowing an
arbitrary, user controlled way to render the placeholders could be better.

ciao, lele.
-- 
nickname: Lele Gaifax | Quando vivrò di quello che ho pensato ieri
real: Emanuele Gaifas | comincerò ad aver paura di chi mi copia.
l...@metapensiero.it  |                 -- Fortunato Depero, 1929.

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to