summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/databases
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2006-02-19 00:26:22 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2006-02-19 00:26:22 +0000
commit6d442d2471a34c848abf51951460d9066a708aa7 (patch)
tree52837a893575b076889829676de2d805e3da855e /lib/sqlalchemy/databases
parentf1a68f37fa9aea41d21049307fef840f9b6a0116 (diff)
downloadsqlalchemy-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')
-rw-r--r--lib/sqlalchemy/databases/information_schema.py3
-rw-r--r--lib/sqlalchemy/databases/postgres.py16
-rw-r--r--lib/sqlalchemy/databases/sqlite.py3
3 files changed, 13 insertions, 9 deletions
diff --git a/lib/sqlalchemy/databases/information_schema.py b/lib/sqlalchemy/databases/information_schema.py
index eb0863100..825e0017a 100644
--- a/lib/sqlalchemy/databases/information_schema.py
+++ b/lib/sqlalchemy/databases/information_schema.py
@@ -3,6 +3,7 @@ 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 *
from sqlalchemy.ansisql import *
@@ -70,7 +71,7 @@ class ISchema(object):
try:
gen_tbl = globals()['gen_'+name]
except KeyError:
- raise AttributeError('information_schema table %s not found' % name)
+ raise ArgumentError('information_schema table %s not found' % name)
self.cache[name] = gen_tbl.toengine(self.engine)
return self.cache[name]
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()
diff --git a/lib/sqlalchemy/databases/sqlite.py b/lib/sqlalchemy/databases/sqlite.py
index b0101c3f2..240773043 100644
--- a/lib/sqlalchemy/databases/sqlite.py
+++ b/lib/sqlalchemy/databases/sqlite.py
@@ -12,6 +12,7 @@ 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.ansisql import *
import datetime,time
@@ -123,7 +124,7 @@ def descriptor():
class SQLiteSQLEngine(ansisql.ANSISQLEngine):
def __init__(self, opts, **params):
if sqlite is None:
- raise "Couldn't import pysqlite2"
+ raise ArgumentError("Couldn't import sqlite or pysqlite2")
self.filename = opts.pop('filename', ':memory:')
self.opts = opts or {}
params['poolclass'] = sqlalchemy.pool.SingletonThreadPool