The DAL does this to get the id for MySQL inserts:

self.execute('select last_insert_id();')

Unfortunately, the value of last_insert_id() is only updated when the id is 
auto-generated, so it stores the last auto-generated id (which you 
observed), not the last id.

In order to get the last id (whether auto-generated or not), you need to 
use the MySQL 
mysql_insert_id()<http://dev.mysql.com/doc/refman/5.0/en/mysql-insert-id.html>C 
API function. I'm not sure if this is available via the pymysql driver, 
but the MySQLdb driver connection object does include a conn.insert_id() 
method to access this function (see 
http://mysql-python.sourceforge.net/MySQLdb.html#mysql-c-api-function-mapping). 
Perhaps the DAL code can be changed to use that method when the MySQLdb 
driver is being used. If you'd like, you can open a Google Code 
issue<https://code.google.com/p/web2py/issues/list>about this (and reference 
this thread).

Anthony

On Tuesday, August 6, 2013 11:41:03 PM UTC-4, Jim Gregory wrote:
>
> I'm porting a legacy table to a new table having a different schema. The 
> old table had a field (order_number) that was unique and autoincrementing 
> but not the primary key. I want to use those old values as the primary key 
> in the new table.

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to