Jeff Peck wrote:
> I recently tried out 0.6 beta 3, and I noticed that the following
> construct is no longer allowed using the sql expression language:
>
> def update_foos(connection, foo_items):
> update = foo_table.update(
> foo_table.c.id == bindparam('id'),
> values = { 'column_1' : bindparam('column_1'), .......}
> )
> connection.execute(update, foo_items)
>
>
> Apparently you can't specify a bindparam in the where clause now. I
> was just kind of curious as to what led to this change, and what is
> the recommended way of doing this now? Should I have been doing this
> in the first place?
that's not accurate. you can specify bindparams() anywhere in the
statement. It is the *name* of the bindparam which matches that of a
column that is reserved for the SET clause of the statement - this is why
the error says: "Bind parameter name 'foo' is reserved for the VALUES or
SET clause of this insert/update statement".
Above, you don't even need the "values" phrase - bindparams that are named
the same as the column are implicit (it has always been this way):
foo_items = [
{'table_id':id, 'column_1':col1, 'column_2':col2, ...} for id, col1,
col2, ... in data
]
update = foo_table.update().where(foo_table.c.id == bindparam('table_id'))
connection.execute(update, foo_items)
Given the above behavior, the change is that the compiler needn't spend a
dozen function calls guessing whether the parameter keys passed to
execute() are intended for usage with user-specific bindparam()
constructs, or the "implicit" parameter constructs used for the SET clause
(this guessing also didn't work completely, so it was removed).
I will add further detail to the error message.
>
>
> Thanks,
> Jeff Peck
>
> --
> 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.
>
>
--
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.