diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-02-19 00:26:22 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-02-19 00:26:22 +0000 |
| commit | 6d442d2471a34c848abf51951460d9066a708aa7 (patch) | |
| tree | 52837a893575b076889829676de2d805e3da855e /lib/sqlalchemy/databases/postgres.py | |
| parent | f1a68f37fa9aea41d21049307fef840f9b6a0116 (diff) | |
| download | sqlalchemy-6d442d2471a34c848abf51951460d9066a708aa7.tar.gz | |
exceptions added
postgres last_inserted_ids will raise an error unless OID's are turned on
(INSERT with PK defaults + no OIDs wont fail unless this method is called)
Diffstat (limited to 'lib/sqlalchemy/databases/postgres.py')
| -rw-r--r-- | lib/sqlalchemy/databases/postgres.py | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/lib/sqlalchemy/databases/postgres.py b/lib/sqlalchemy/databases/postgres.py index a5b5b250d..011dcfd2a 100644 --- a/lib/sqlalchemy/databases/postgres.py +++ b/lib/sqlalchemy/databases/postgres.py @@ -11,8 +11,9 @@ import sqlalchemy.engine as engine import sqlalchemy.schema as schema import sqlalchemy.ansisql as ansisql import sqlalchemy.types as sqltypes +from sqlalchemy.exceptions import * from sqlalchemy import * -import sqlalchemy.databases.information_schema as ischema +import information_schema as ischema try: import psycopg2 as psycopg @@ -156,7 +157,7 @@ class PGSQLEngine(ansisql.ANSISQLEngine): self.use_oids = use_oids if module is None: if psycopg is None: - raise "Couldnt locate psycopg1 or psycopg2: specify postgres module argument" + raise ArgumentError("Couldnt locate psycopg1 or psycopg2: specify postgres module argument") self.module = psycopg else: self.module = module @@ -186,9 +187,6 @@ class PGSQLEngine(ansisql.ANSISQLEngine): else: return sqltypes.adapt_type(typeobj, pg1_colspecs) - def last_inserted_ids(self): - return self.context.last_inserted_ids - def compiler(self, statement, bindparams, **kwargs): return PGCompiler(self, statement, bindparams, **kwargs) @@ -207,7 +205,10 @@ class PGSQLEngine(ansisql.ANSISQLEngine): return self._default_schema_name def last_inserted_ids(self): - return self.context.last_inserted_ids + if self.context.last_inserted_ids is None: + raise InvalidRequestError("no INSERT executed, or cant use cursor.lastrowid without Postgres OIDs enabled") + else: + return self.context.last_inserted_ids def oid_column_name(self): if self.use_oids: @@ -221,7 +222,8 @@ class PGSQLEngine(ansisql.ANSISQLEngine): def post_exec(self, proxy, compiled, parameters, **kwargs): if getattr(compiled, "isinsert", False) and self.context.last_inserted_ids is None: if not self.use_oids: - raise "cant use cursor.lastrowid without OIDs enabled" + pass + # will raise invalid error when they go to get them else: table = compiled.statement.table cursor = proxy() |
