]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
primary_keys => primary_key
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 4 Dec 2005 00:18:51 +0000 (00:18 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 4 Dec 2005 00:18:51 +0000 (00:18 +0000)
lib/sqlalchemy/ansisql.py
lib/sqlalchemy/databases/mysql.py
lib/sqlalchemy/databases/oracle.py
lib/sqlalchemy/databases/postgres.py
lib/sqlalchemy/databases/sqlite.py
lib/sqlalchemy/engine.py
lib/sqlalchemy/mapping/mapper.py
lib/sqlalchemy/mapping/objectstore.py
lib/sqlalchemy/schema.py
lib/sqlalchemy/sql.py

index 85b687ad1501b801576ea13c1a212e1e0659bca9..5490819476a8bd1af297b487cb1d9fcb04c87e48 100644 (file)
@@ -340,7 +340,7 @@ class ANSISchemaGenerator(sqlalchemy.engine.SchemaIterator):
         separator = "\n"
         
         # if only one primary key, specify it along with the column
-        pks = table.primary_keys
+        pks = table.primary_key
         first_pk = False
         for column in table.columns:
             self.append(separator)
index 429ffc0fd0437aded202d9bd0aed5c07d727c72e..9e3f677d119f38cea30f8889311b6e43c30966fe 100644 (file)
@@ -167,8 +167,8 @@ class MySQLTableImpl(sql.TableImpl):
     """
     def _rowid_col(self):
         if getattr(self, '_mysql_rowid_column', None) is None:
-            if len(self.table.primary_keys) > 0:
-                self._mysql_rowid_column = self.table.primary_keys[0]
+            if len(self.table.primary_key) > 0:
+                self._mysql_rowid_column = self.table.primary_key[0]
             else:
                 self._mysql_rowid_column = self.table.columns[self.table.columns.keys()[0]]
         return self._mysql_rowid_column
index 91547d12c805d0d9a38fcb864a56d78df0a4526e..58d533b1080a119dc56364cac9067585d6f53528 100644 (file)
@@ -125,7 +125,7 @@ class OracleSQLEngine(ansisql.ANSISQLEngine):
                 plist = [parameters]
             for param in plist:
                 last_inserted_ids = []
-                for primary_key in compiled.statement.table.primary_keys:
+                for primary_key in compiled.statement.table.primary_key:
                     if not param.has_key(primary_key.key) or param[primary_key.key] is None:
                         if primary_key.sequence is None:
                             raise "Column '%s.%s': Oracle primary key columns require schema.Sequence to create ids" % (primary_key.table.name, primary_key.name)
@@ -190,7 +190,7 @@ class OracleCompiler(ansisql.ANSICompiler):
          mapper will by default not put them in the insert statement to comply
          with autoincrement fields that require they not be present.  so, 
          put them all in for all primary key columns."""
-        for c in insert.table.primary_keys:
+        for c in insert.table.primary_key:
             if not self.bindparams.has_key(c.key):
                 self.bindparams[c.key] = None
         return ansisql.ANSICompiler.visit_insert(self, insert)
index 75b9e1aee3d36c53244f2d6cb290187909b6bfab..5a3d6388a3f2f3dc546e52308b2d038eb78f51d5 100644 (file)
@@ -165,8 +165,8 @@ class PGSQLEngine(ansisql.ANSISQLEngine):
         
         # else we have to use lastrowid and select the most recently inserted row    
         table = self.context.last_inserted_table
-        if self.context.lastrowid is not None and table is not None and len(table.primary_keys):
-            row = sql.select(table.primary_keys, table.rowid_column == self.context.lastrowid).execute().fetchone()
+        if self.context.lastrowid is not None and table is not None and len(table.primary_key):
+            row = sql.select(table.primary_key, table.rowid_column == self.context.lastrowid).execute().fetchone()
             return [v for v in row]
         else:
             return None
@@ -185,7 +185,7 @@ class PGSQLEngine(ansisql.ANSISQLEngine):
             for param in plist:
                 last_inserted_ids = []
                 need_lastrowid=False
-                for primary_key in compiled.statement.table.primary_keys:
+                for primary_key in compiled.statement.table.primary_key:
                     if not param.has_key(primary_key.key) or param[primary_key.key] is None:
                         if primary_key.sequence is not None and not primary_key.sequence.optional:
                             if echo is True or self.echo:
@@ -236,7 +236,7 @@ class PGCompiler(ansisql.ANSICompiler):
          mapper will by default not put them in the insert statement to comply
          with autoincrement fields that require they not be present.  so, 
          put them all in for columns where sequence usage is defined."""
-        for c in insert.table.primary_keys:
+        for c in insert.table.primary_key:
             if c.sequence is not None and not c.sequence.optional:
                 self.bindparams[c.key] = None
         return ansisql.ANSICompiler.visit_insert(self, insert)
index 845efdf33a1c3533d00e4c5652dac28ee23ed9f7..0244fb21b7b0e93bdbebf63b0dc0f943491726ad 100644 (file)
@@ -203,16 +203,16 @@ class SQLiteSchemaGenerator(ansisql.ANSISchemaGenerator):
         separator = "\n"
 
         have_pk = False
-        use_pks = len(table.primary_keys) == 1
+        use_pks = len(table.primary_key) == 1
         for column in table.columns:
             self.append(separator)
             separator = ", \n"
             self.append("\t" + self.get_column_specification(column, override_pk=not use_pks))
                 
-        if len(table.primary_keys) > 1:
+        if len(table.primary_key) > 1:
             self.append(", \n")
             # put all PRIMARY KEYS in a UNIQUE index
-            self.append("\tUNIQUE (%s)" % string.join([c.name for c in table.primary_keys],', '))
+            self.append("\tUNIQUE (%s)" % string.join([c.name for c in table.primary_key],', '))
 
         self.append("\n)\n\n")
         self.execute()
index c90eb6894292f0bc8548faef0d3e4141c29907a3..d39ec1e83edafa69c185412a2fa3f33176c78b07 100644 (file)
@@ -157,7 +157,7 @@ class SQLEngine(schema.SchemaEngine):
         
     def last_inserted_ids(self):
         """returns a thread-local list of the primary keys for the last insert statement executed.
-        This does not apply to straight textual clauses; only to sql.Insert objects compiled against a schema.Table object, which are executed via statement.execute().  The order of items in the list is the same as that of the Table's 'primary_keys' attribute."""
+        This does not apply to straight textual clauses; only to sql.Insert objects compiled against a schema.Table object, which are executed via statement.execute().  The order of items in the list is the same as that of the Table's 'primary_key' attribute."""
         raise NotImplementedError()
 
     def connect_args(self):
index 8150f6f90d2c3c1d7e12bcb91fc7e28cb2eca461..52712eff9c7cca528f64de412fd81b45395c6f76 100644 (file)
@@ -36,7 +36,7 @@ class Mapper(object):
                 primarytable = None, 
                 scope = "thread", 
                 properties = None, 
-                primary_keys = None, 
+                primary_key = None, 
                 is_primary = False, 
                 inherits = None, 
                 inherit_condition = None, 
@@ -49,7 +49,7 @@ class Mapper(object):
             'primarytable':primarytable,
             'scope':scope,
             'properties':properties or {},
-            'primary_keys':primary_keys,
+            'primary_key':primary_key,
             'is_primary':False,
             'inherits':inherits,
             'inherit_condition':inherit_condition,
@@ -89,22 +89,22 @@ class Mapper(object):
         else:
             self.primarytable = primarytable
 
-        # determine primary keys, either passed in, or get them from our set of tables
-        self.primary_keys = {}
-        if primary_keys is not None:
-            for k in primary_keys:
-                self.primary_keys.setdefault(k.table, []).append(k)
+        # determine primary key columns, either passed in, or get them from our set of tables
+        self.pks_by_table = {}
+        if primary_key is not None:
+            for k in primary_key:
+                self.pks_by_table.setdefault(k.table, []).append(k)
                 if k.table != self.table:
-                    self.primary_keys.setdefault(self.table, []).append(k)
+                    self.pks_by_table.setdefault(self.table, []).append(k)
         else:
             for t in self.tables + [self.table]:
                 try:
-                    list = self.primary_keys[t]
+                    list = self.pks_by_table[t]
                 except KeyError:
-                    list = self.primary_keys.setdefault(t, util.HashSet())
-                if not len(t.primary_keys):
-                    raise "Table " + t.name + " has no primary keys. Specify primary_keys argument to mapper."
-                for k in t.primary_keys:
+                    list = self.pks_by_table.setdefault(t, util.HashSet())
+                if not len(t.primary_key):
+                    raise "Table " + t.name + " has no primary key columns. Specify primary_key argument to mapper."
+                for k in t.primary_key:
                     list.append(k)
 
         # make table columns addressable via the mapper
@@ -241,7 +241,7 @@ class Mapper(object):
     def get(self, *ident):
         """returns an instance of the object based on the given identifier, or None
         if not found.  The *ident argument is a 
-        list of primary keys in the order of the table def's primary keys."""
+        list of primary key columns in the order of the table def's primary key columns."""
         key = objectstore.get_id_key(ident, self.class_, self.primarytable)
         #print "key: " + repr(key) + " ident: " + repr(ident)
         try:
@@ -249,7 +249,7 @@ class Mapper(object):
         except KeyError:
             clause = sql.and_()
             i = 0
-            for primary_key in self.primary_keys[self.primarytable]:
+            for primary_key in self.pks_by_table[self.primarytable]:
                 # appending to the and_'s clause list directly to skip
                 # typechecks etc.
                 clause.clauses.append(primary_key == ident[i])
@@ -260,11 +260,11 @@ class Mapper(object):
                 return None
 
         
-    def identity_key(self, *primary_keys):
-        return objectstore.get_id_key(tuple(primary_keys), self.class_, self.primarytable)
+    def identity_key(self, *primary_key):
+        return objectstore.get_id_key(tuple(primary_key), self.class_, self.primarytable)
     
     def instance_key(self, instance):
-        return self.identity_key(*[self._getattrbycolumn(instance, column) for column in self.primary_keys[self.table]])
+        return self.identity_key(*[self._getattrbycolumn(instance, column) for column in self.pks_by_table[self.table]])
 
     def compile(self, whereclause = None, **options):
         """works like select, except returns the SQL statement object without 
@@ -346,16 +346,16 @@ class Mapper(object):
         for table in self.tables:
             # loop thru tables in the outer loop, objects on the inner loop.
             # this is important for an object represented across two tables
-            # so that it gets its primary keys populated for the benefit of the
+            # so that it gets its primary key columns populated for the benefit of the
             # second table.
             insert = []
             update = []
             
-            # we have our own idea of the primary keys 
+            # we have our own idea of the primary key column
             # for this table, in the case that the user
-            # specified custom primary keys.
+            # specified custom primary key cols.
             pk = {}
-            for k in self.primary_keys[table]:
+            for k in self.pks_by_table[table]:
                 pk[k] = k
             for obj in objects:
                 
@@ -384,7 +384,7 @@ class Mapper(object):
             if len(update):
                 #print "REGULAR UPDATES"
                 clause = sql.and_()
-                for col in self.primary_keys[table]:
+                for col in self.pks_by_table[table]:
                     clause.clauses.append(col == sql.bindparam(col.table.name + "_" + col.key))
                 statement = table.update(clause)
                 c = statement.execute(*update)
@@ -396,13 +396,13 @@ class Mapper(object):
                 for rec in insert:
                     (obj, params) = rec
                     statement.execute(**params)
-                    primary_keys = table.engine.last_inserted_ids()
-                    if primary_keys is not None:
+                    primary_key = table.engine.last_inserted_ids()
+                    if primary_key is not None:
                         i = 0
-                        for col in self.primary_keys[table]:
+                        for col in self.pks_by_table[table]:
                     #        print "col: " + table.name + "." + col.key + " val: " + repr(self._getattrbycolumn(obj, col))
                             if self._getattrbycolumn(obj, col) is None:
-                                self._setattrbycolumn(obj, col, primary_keys[i])
+                                self._setattrbycolumn(obj, col, primary_key[i])
                             i+=1
                     self.extension.after_insert(self, obj)
                     
@@ -417,13 +417,13 @@ class Mapper(object):
                     continue
                 else:
                     delete.append(params)
-                for col in self.primary_keys[table]:
+                for col in self.pks_by_table[table]:
                     params[col.key] = self._getattrbycolumn(obj, col)
                 uow.register_deleted_object(obj)
                 self.extension.before_delete(self, obj)
             if len(delete):
                 clause = sql.and_()
-                for col in self.primary_keys[table]:
+                for col in self.pks_by_table[table]:
                     clause.clauses.append(col == sql.bindparam(col.key))
                 statement = table.delete(clause)
                 c = statement.execute(*delete)
@@ -452,7 +452,7 @@ class Mapper(object):
 
 
     def _identity_key(self, row):
-        return objectstore.get_row_key(row, self.class_, self.primarytable, self.primary_keys[self.table])
+        return objectstore.get_row_key(row, self.class_, self.primarytable, self.pks_by_table[self.table])
 
     def _instance(self, row, imap, result = None, populate_existing = False):
         """pulls an object instance from the given row and appends it to the given result
@@ -484,9 +484,9 @@ class Mapper(object):
         # look in result-local identitymap for it.
         exists = imap.has_key(identitykey)      
         if not exists:
-            # check if primary keys in the result are None - this indicates 
+            # check if primary key cols in the result are None - this indicates 
             # an instance of the object is not present in the row
-            for col in self.primary_keys[self.table]:
+            for col in self.pks_by_table[self.table]:
                 if row[col] is None:
                     return None
             # plugin point
index f66198f2d3f422d2ff2c6ad000f6ed9af795a006..0efd54aea55cae8e09f807bfc6679c9e41f84f7f 100644 (file)
@@ -46,7 +46,7 @@ def get_id_key(ident, class_, table):
     this Selectable may be synonymous with the table argument or can be a larger construct
     containing that table. return value: a tuple object which is used as an identity key. """
     return (class_, repr(table), tuple(ident))
-def get_row_key(row, class_, table, primary_keys):
+def get_row_key(row, class_, table, primary_key):
     """returns an identity-map key for use in storing/retrieving an item from the identity
     map, given a result set row.
 
@@ -61,7 +61,7 @@ def get_row_key(row, class_, table, primary_keys):
     this Selectable may be synonymous with the table argument or can be a larger construct
     containing that table. return value: a tuple object which is used as an identity key.
     """
-    return (class_, repr(table), tuple([row[column] for column in primary_keys]))
+    return (class_, repr(table), tuple([row[column] for column in primary_key]))
 
 def begin():
     """begins a new UnitOfWork transaction.  the next commit will affect only
index 7206cf3c20948ba429c6d2f50e8fb4c8a1029f43..d5dd69dda39902e9d6ba07235662471a652697aa 100644 (file)
@@ -95,7 +95,7 @@ class Table(SchemaItem):
         self.columns = OrderedProperties()
         self.c = self.columns
         self.foreign_keys = []
-        self.primary_keys = []
+        self.primary_key = []
         self.engine = engine
         self._impl = self.engine.tableimpl(self)
         self._init_items(*args)
@@ -111,7 +111,7 @@ class Table(SchemaItem):
         self.columns = OrderedProperties()
         self.c = self.columns
         self.foreign_keys = []
-        self.primary_keys = []
+        self.primary_key = []
         self._impl = self.engine.tableimpl(self)
         self._init_items(*args)
 
@@ -170,13 +170,13 @@ class Column(SchemaItem):
             return
         self.primary_key = True
         self.nullable = False
-        self.table.primary_keys.append(self)
+        self.table.primary_key.append(self)
             
     def _set_parent(self, table):
         if not self.hidden:
             table.columns[self.key] = self
             if self.primary_key:
-                table.primary_keys.append(self)
+                table.primary_key.append(self)
         self.table = table
         if self.table.engine is not None:
             self.type = self.table.engine.type_descriptor(self.type)
index 6a17b445524a6ed60e8f231a64b17dbd9acd127f..a030bf4396dfb293a199b35f5788335d2f1092da 100644 (file)
@@ -634,7 +634,7 @@ class Join(Selectable):
         self.isouter = isouter
         self.rowid_column = self.left.rowid_column
         
-    primary_keys = property (lambda self: [c for c in self.left.columns if c.primary_key] + [c for c in self.right.columns if c.primary_key])
+    primary_key = property (lambda self: [c for c in self.left.columns if c.primary_key] + [c for c in self.right.columns if c.primary_key])
 
     def group_parenthesized(self):
         """indicates if this Selectable requires parenthesis when grouped into a compound
@@ -693,7 +693,7 @@ class Alias(Selectable):
         for co in selectable.columns:
             co._make_proxy(self)
 
-    primary_keys = property (lambda self: [c for c in self.columns if c.primary_key])
+    primary_key = property (lambda self: [c for c in self.columns if c.primary_key])
     
     def hash_key(self):
         return "Alias(%s, %s)" % (repr(self.selectable.hash_key()), repr(self.name))