From c229fd69873594ed6a7027929c1f061107496b91 Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Thu, 31 Jul 2008 18:20:39 +0000 Subject: [PATCH] merge from trunk. changes how we obtain serial primary keys --- PLC/Table.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/PLC/Table.py b/PLC/Table.py index 2362d61..74da3e9 100644 --- a/PLC/Table.py +++ b/PLC/Table.py @@ -1,4 +1,4 @@ -from types import StringTypes +from types import StringTypes, IntType, LongType import time import calendar @@ -230,6 +230,14 @@ class Row(dict): if not self.has_key(self.primary_key) or \ keys == [self.primary_key] or \ insert is True: + + # If primary key id is a serial int, get next id + if self.fields[self.primary_key].type in (IntType, LongType): + pk_id = self.api.db.next_id(self.table_name, self.primary_key) + self[self.primary_key] = pk_id + db_fields[self.primary_key] = pk_id + keys = db_fields.keys() + values = [self.api.db.param(key, value) for (key, value) in db_fields.items()] # Insert new row sql = "INSERT INTO %s (%s) VALUES (%s)" % \ (self.table_name, ", ".join(keys), ", ".join(values)) @@ -244,9 +252,6 @@ class Row(dict): self.api.db.do(sql, db_fields) - if not self.has_key(self.primary_key): - self[self.primary_key] = self.api.db.last_insert_id(self.table_name, self.primary_key) - if commit: self.api.db.commit() -- 2.43.0