From 9836bb86576717d4b77fdeb5907e83b959ac4e3a Mon Sep 17 00:00:00 2001 From: Jeff Raber <jeff.raber@gmail.com> Date: Wed, 2 Mar 2011 10:58:40 -0600 Subject: [PATCH] sqlalchemy: lastrowid vs. inserted_primary_key src/lib/backends/db.py: Check the version of sqlalchemy being used to decide which property to use to get the id of the last inserted row. --- src/lib/backends/db.py | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/lib/backends/db.py b/src/lib/backends/db.py index 2d9a103..5521f86 100644 --- a/src/lib/backends/db.py +++ b/src/lib/backends/db.py @@ -1281,7 +1281,10 @@ class RecData (Pluggable): def do_add_and_return_item (self, table, dic, id_prop='id'): result_proxy = self.do_add(table,dic) - select = table.select(getattr(table.c,id_prop)==result_proxy.inserted_primary_key[0]) + if re.match('(\d[.]\d)([.].*\d)?$',sqlalchemy.__version__).group(1)=="0.5": + select = table.select(getattr(table.c,id_prop)==result_proxy.lastrowid) + else: + select = table.select(getattr(table.c,id_prop)==result_proxy.inserted_primary_key[0]) return select.execute().fetchone() def do_add_ing (self,dic): @@ -1308,7 +1311,10 @@ class RecData (Pluggable): else: raise ValueError('New recipe created with preset id %s, but ID is not in our list of new_ids'%rdict['id']) insert_statement = self.recipe_table.insert() - select = self.recipe_table.select(self.recipe_table.c.id==insert_statement.execute(**rdict).inserted_primary_key[0]) + if re.match('(\d[.]\d)([.].*\d)?$',sqlalchemy.__version__).group(1)=="0.5": + select = self.recipe_table.select(self.recipe_table.c.id==insert_statement.execute(**rdict).lastrowid) + else: + select = self.recipe_table.select(self.recipe_table.c.id==insert_statement.execute(**rdict).inserted_primary_key[0]) return select.execute().fetchone() def validate_ingdic (self,dic): -- 1.7.4