diff options
| author | Russell Keith-Magee <russell@keith-magee.com> | 2010-01-29 15:45:55 +0000 |
|---|---|---|
| committer | Russell Keith-Magee <russell@keith-magee.com> | 2010-01-29 15:45:55 +0000 |
| commit | 11ee9746a0530ec38f523fb4de44950d9b783877 (patch) | |
| tree | 7fd170a1d1231b294694b28a796f8b0ad5b70b8f /django/db/backends/sqlite3 | |
| parent | 47acb1d659c0c589b6c6532f8618da0bb757324c (diff) | |
Fixed #12702 -- Introduced a common implementation of DatabaseError and IntegrityError, so that database backends can (re)raise common error classes. Thanks for Waldemar Kornewald for the report.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12352 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/db/backends/sqlite3')
| -rw-r--r-- | django/db/backends/sqlite3/base.py | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/django/db/backends/sqlite3/base.py b/django/db/backends/sqlite3/base.py index 000b55f686..a9b1aa3f8b 100644 --- a/django/db/backends/sqlite3/base.py +++ b/django/db/backends/sqlite3/base.py @@ -7,6 +7,9 @@ Python 2.5 and later can use a pysqlite2 module or the sqlite3 module in the standard library. """ +import sys + +from django.db import utils from django.db.backends import * from django.db.backends.signals import connection_created from django.db.backends.sqlite3.client import DatabaseClient @@ -185,16 +188,25 @@ class SQLiteCursorWrapper(Database.Cursor): you'll need to use "%%s". """ def execute(self, query, params=()): - query = self.convert_query(query, len(params)) - return Database.Cursor.execute(self, query, params) + try: + query = self.convert_query(query, len(params)) + return Database.Cursor.execute(self, query, params) + except Database.IntegrityError, e: + raise utils.IntegrityError, utils.IntegrityError(*tuple(e)), sys.exc_info()[2] + except Database.DatabaseError, e: + raise utils.DatabaseError, utils.DatabaseError(*tuple(e)), sys.exc_info()[2] def executemany(self, query, param_list): try: - query = self.convert_query(query, len(param_list[0])) - return Database.Cursor.executemany(self, query, param_list) + query = self.convert_query(query, len(param_list[0])) + return Database.Cursor.executemany(self, query, param_list) except (IndexError,TypeError): - # No parameter list provided - return None + # No parameter list provided + return None + except Database.IntegrityError, e: + raise utils.IntegrityError, utils.IntegrityError(*tuple(e)), sys.exc_info()[2] + except Database.DatabaseError, e: + raise utils.DatabaseError, utils.DatabaseError(*tuple(e)), sys.exc_info()[2] def convert_query(self, query, num_params): return query % tuple("?" * num_params) |
