Bug reported in Launchpad.
Although UPDATE ... SET ... ORDER BY .... is valid SQL, current db module doesn't support this. Current documentation shows arguments for db.select works for db.update, and there's no mention about order is not working in update.
Supposed to be work:
ret = self.db.update('Articles', vars = val,
where = 'bSerial = $board_id AND aIndex >= $index',
order = 'aIndex DESC',
aIndex = web.SQLLiteral('aIndex + 1'))
ERR: UPDATE Articles SET order = 'aIndex DESC', aIndex = aIndex + 1
WHERE bSerial = 1371L AND aIndex >= 48L
ProgrammingError: (1064, "You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for
the right syntax to use near 'order = 'aIndex DESC', aIndex = aIndex + 1
WHERE bSerial = 1371 AND aIndex >= 48' at line 1")
Looks like UPDATE order by is supported only by MySQL. It fails in Postgres.
webpy=# update person set name='x' order by id limit 1;
ERROR: syntax error at or near "order"
LINE 1: update person set name='x' order by id limit 1;
I don't think it is worth adding support for this.