This branch introduces a new hook which allows backends to modify variables which are part of the primary key of an object before they are inserted in the database. Also, lazy values may now be used in the primary key, which means that it's possible to set these primary variables to SQL expressions if needed.
Other minor changes include an optimization in Result: it will preset the raw cursor's arraysize to a better value if it's found to be 1. Result.__iter__() was also fixed to parse rows through the from_database hook.