what a coincidence, 2 days ago we stepped on this bindparam-types 
thing; table.some_decimal_column == decimal.Decimal(5) did not always 
work.

now it mostly works, i think there is one more case that breaks for 
me: when the column itself is hidden in a function.
e.g.
table_A = Table( 'Nalichnost', meta,
    Column( 'db_id',   primary_key= True,   type_= Integer, ),
    Column( 'price', Numeric(precision=10,length=2,asdecimal=True), ),
)

print session.query( A).filter(
              (func.coalesce( A.price, 0) ==Decimal( 1))
        ).all()

Traceback (most recent call last):
  File "aa.py", line 40, in <module>
    (func.coalesce( Nalichnost.cena, 0) ==Decimal( 1))
  File "sqlalchemy/orm/query.py", line 586, in all
    return list(self)
  File "sqlalchemy/orm/query.py", line 634, in __iter__
    return self._execute_and_instances(context)
  File "sqlalchemy/orm/query.py", line 637, in _execute_and_instances
    result = self.session.execute(querycontext.statement, 
params=self._params, mapper=self.mapper)
  File "sqlalchemy/orm/session.py", line 527, in execute
    return self.__connection(engine, 
close_with_result=True).execute(clause, params or {}, **kwargs)
  File "sqlalchemy/engine/base.py", line 784, in execute
    return Connection.executors[c](self, object, multiparams, params)
  File "sqlalchemy/engine/base.py", line 835, in execute_clauseelement
    return self._execute_compiled(elem.compile(dialect=self.dialect, 
column_keys=keys, inline=len(params) > 1), distilled_params=params)
  File "sqlalchemy/engine/base.py", line 847, in _execute_compiled
    self.__execute_raw(context)
  File "sqlalchemy/engine/base.py", line 859, in __execute_raw
    self._cursor_execute(context.cursor, context.statement, 
context.parameters[0], context=context)
  File "sqlalchemy/engine/base.py", line 875, in _cursor_execute
    raise exceptions.DBAPIError.instance(statement, parameters, e)
sqlalchemy.exceptions.InterfaceError: (InterfaceError) 
Error binding parameter 1 - probably unsupported type. 
u'SELECT "Nalichnost".db_id AS "Nalichnost_db_id", "Nalichnost".cena 
AS "Nalichnost_cena" FROM "Nalichnost" 
WHERE coalesce("Nalichnost".cena, ?) = ? ORDER BY "Nalichnost".oid' 
[0, Decimal("1")]

which the same as what was before r3762 for half of the 
Decimal-passing queries.

i guess the funcs could return anything, so their return type is 
probably unknown generally. For this one, i am generating the query, 
so i could hint the bindparam something about the type of the 
column - but i dont know what.
any idea?

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to