diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2005-08-28 01:27:19 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2005-08-28 01:27:19 +0000 |
commit | f91cfdb8ac8794ea8e9f348b21ebbbf553d8bd4b (patch) | |
tree | 01b5801f6d5d8560d1eb449bdb7eb100704eacf0 /lib/sqlalchemy/databases/postgres.py | |
parent | dac3df1a1a5b04ee2caa91b350291e0050b86d51 (diff) | |
download | sqlalchemy-f91cfdb8ac8794ea8e9f348b21ebbbf553d8bd4b.tar.gz |
dev
Diffstat (limited to 'lib/sqlalchemy/databases/postgres.py')
-rw-r--r-- | lib/sqlalchemy/databases/postgres.py | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/sqlalchemy/databases/postgres.py b/lib/sqlalchemy/databases/postgres.py index fa5124ed1..f6d56d207 100644 --- a/lib/sqlalchemy/databases/postgres.py +++ b/lib/sqlalchemy/databases/postgres.py @@ -52,15 +52,22 @@ class PGSQLEngine(ansisql.ANSISQLEngine): statement.accept_visitor(compiler) return compiler + def last_inserted_ids(self): + return self.context.last_inserted_ids + def pre_exec(self, connection, cursor, statement, parameters, echo = None, compiled = None, **kwargs): if compiled is None: return if getattr(compiled, "isinsert", False): + last_inserted_ids = [] for primary_key in compiled.statement.table.primary_keys: # pseudocode if echo is True or self._echo: self.log(primary_key.sequence.text) res = cursor.execute(primary_key.sequence.text) - parameters[primary_key.key] = res.fetchrow()[0] + newid = res.fetchrow()[0] + parameters[primary_key.key] = newid + last_inserted_ids.append(newid) + self.context.last_inserted_ids = last_inserted_ids def dbapi(self): return None @@ -73,10 +80,8 @@ class PGSQLEngine(ansisql.ANSISQLEngine): raise NotImplementedError() class PGCompiler(ansisql.ANSICompiler): - def visit_insert(self, insert): - self.isinsert = True - super(self).visit_insert(insert) - + pass + class PGColumnImpl(sql.ColumnSelectable): def get_specification(self): coltype = self.column.type |