]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
(no commit message)
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 23 Sep 2005 06:47:14 +0000 (06:47 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 23 Sep 2005 06:47:14 +0000 (06:47 +0000)
lib/sqlalchemy/schema.py

index bbe21ab4be1de864a5d93c32a86189142f6ac4bd..ebd660828db575f8a0f06b9f85970c29f4e4c7d7 100644 (file)
@@ -51,8 +51,14 @@ class SchemaItem(object):
 class TableSingleton(type):
     def __call__(self, name, engine, *args, **kwargs):
         try:
-            return engine.tables[name]
-        except:
+            table = engine.tables[name]
+            if len(args):
+                if kwargs.get('redefine', False):
+                    table.reload_values(*args)
+                else:
+                    raise "Table '%s' is already defined. specify 'redefine=True' to remap columns" % name
+            return table
+        except KeyError:
             if kwargs.get('mustexist', False):
                 raise "Table '%s' not defined" % name
             table = type.__call__(self, name, engine, *args, **kwargs)
@@ -66,7 +72,6 @@ class TableSingleton(type):
             return table
 
         
-        
 class Table(SchemaItem):
     """represents a relational database table."""
     __metaclass__ = TableSingleton
@@ -81,6 +86,14 @@ class Table(SchemaItem):
         self._impl = self.engine.tableimpl(self)
         self._init_items(*args)
 
+    def reload_values(self, *args):
+        self.columns = OrderedProperties()
+        self.c = self.columns
+        self.foreign_keys = OrderedProperties()
+        self.primary_keys = []
+        self._impl = self.engine.tableimpl(self)
+        self._init_items(*args)
+
     def append_item(self, item):
         self._init_items(item)
 
@@ -177,6 +190,7 @@ class ForeignKey(SchemaItem):
             else:
                 self._column = self._colspec
 
+            print "setting up key " + self._column.key + " onto table " + self.parent.table.name
             self.parent.table.foreign_keys[self._column.key] = self
         return self._column