]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
save_obj/delete_obj need to specify column types to binds for primary key criterion
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 4 May 2006 20:27:18 +0000 (20:27 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 4 May 2006 20:27:18 +0000 (20:27 +0000)
lib/sqlalchemy/mapping/mapper.py

index db404b6eac41405481ae2216a7a3d27252be63ba..15d197a3400e28ac50a1ac1b9925a4e728d98cf9 100644 (file)
@@ -580,9 +580,9 @@ class Mapper(object):
             if len(update):
                 clause = sql.and_()
                 for col in self.pks_by_table[table]:
-                    clause.clauses.append(col == sql.bindparam(col._label))
+                    clause.clauses.append(col == sql.bindparam(col._label, type=col.type))
                 if self.version_id_col is not None:
-                    clause.clauses.append(self.version_id_col == sql.bindparam(self.version_id_col._label))
+                    clause.clauses.append(self.version_id_col == sql.bindparam(self.version_id_col._label, type=col.type))
                 statement = table.update(clause)
                 rows = 0
                 for rec in update:
@@ -654,9 +654,9 @@ class Mapper(object):
             if len(delete):
                 clause = sql.and_()
                 for col in self.pks_by_table[table]:
-                    clause.clauses.append(col == sql.bindparam(col.key))
+                    clause.clauses.append(col == sql.bindparam(col.key, type=col.type))
                 if self.version_id_col is not None:
-                    clause.clauses.append(self.version_id_col == sql.bindparam(self.version_id_col.key))
+                    clause.clauses.append(self.version_id_col == sql.bindparam(self.version_id_col.key, type=self.version_id_col.type))
                 statement = table.delete(clause)
                 c = statement.execute(*delete)
                 if c.supports_sane_rowcount() and c.rowcount != len(delete):