It seems compile()'ing a query results in the default bindparams not
being used, is this a bug?

Simple test case:

>>> from sqlalchemy import *
>>> engine = create_engine('postgres://uname:[EMAIL PROTECTED]/testdb')
>>> query = text('select * from table limit :num', bindparams=[bindparam('num', 
>>> value=50)])
>>> engine.execute(query).rowcount
50
>>> query = text('select * from table limit :num', bindparams=[bindparam('num', 
>>> value=50)]).compile()
>>> query.params
{'num': 50}
>>> engine.execute(query).rowcount
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/zepolen/projects/test/ENV/lib/python2.5/site-packages/
SQLAlchemy-0.5.0rc4-py2.5.egg/sqlalchemy/engine/base.py", line 1174,
in execute
    return connection.execute(statement, *multiparams, **params)
  File "/home/zepolen/projects/test/ENV/lib/python2.5/site-packages/
SQLAlchemy-0.5.0rc4-py2.5.egg/sqlalchemy/engine/base.py", line 806, in
execute
    return Connection.executors[c](self, object, multiparams, params)
  File "/home/zepolen/projects/test/ENV/lib/python2.5/site-packages/
SQLAlchemy-0.5.0rc4-py2.5.egg/sqlalchemy/engine/base.py", line 865, in
_execute_compiled
    return self.__execute_context(context)
  File "/home/zepolen/projects/test/ENV/lib/python2.5/site-packages/
SQLAlchemy-0.5.0rc4-py2.5.egg/sqlalchemy/engine/base.py", line 878, in
__execute_context
    self._cursor_execute(context.cursor, context.statement,
context.parameters[0], context=context)
  File "/home/zepolen/projects/test/ENV/lib/python2.5/site-packages/
SQLAlchemy-0.5.0rc4-py2.5.egg/sqlalchemy/engine/base.py", line 927, in
_cursor_execute
    self._handle_dbapi_exception(e, statement, parameters, cursor)
  File "/home/zepolen/projects/test/ENV/lib/python2.5/site-packages/
SQLAlchemy-0.5.0rc4-py2.5.egg/sqlalchemy/engine/base.py", line 909, in
_handle_dbapi_exception
    raise exc.DBAPIError.instance(statement, parameters, e,
connection_invalidated=is_disconnect)
sqlalchemy.exc.ProgrammingError: (ProgrammingError) syntax error at or
near ":"
LINE 1: select * from table limit :num
                                    ^
 'select * from table limit :num' {'num': 50}

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to [email protected]
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