From ddf148449d253e7fdf541e7fedb69b657d793349 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Thu, 25 Aug 2011 13:47:07 +0200 Subject: [PATCH] Now with exception handling. --- openlp/core/lib/db.py | 13 ++++++++----- openlp/plugins/songs/lib/upgrade.py | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index fab20d36f..12f35ad1f 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -32,7 +32,7 @@ import os from PyQt4 import QtCore from sqlalchemy import Table, MetaData, Column, types, create_engine -from sqlalchemy.exc import InvalidRequestError +from sqlalchemy.exc import SQLAlchemyError, InvalidRequestError, DBAPIError from sqlalchemy.orm import scoped_session, sessionmaker, mapper from sqlalchemy.pool import NullPool @@ -87,11 +87,14 @@ def upgrade_db(url, upgrade): version += 1 while hasattr(upgrade, u'upgrade_%d' % version): log.debug(u'Running upgrade_%d', version) - do_upgrade = getattr(upgrade, u'upgrade_%d' % version) - if not do_upgrade(session, metadata, tables): + try: + getattr(upgrade, u'upgrade_%d' % version)(session, metadata, tables) + version += 1 + version_meta.value = unicode(version) + except SQLAlchemyError, DBAPIError: + log.exception(u'Could not run database upgrade script "upgrade_%s"'\ + ', upgrade process has been halted.', version) break - version += 1 - version_meta.value = unicode(version) session.add(version_meta) session.commit() diff --git a/openlp/plugins/songs/lib/upgrade.py b/openlp/plugins/songs/lib/upgrade.py index 09b7cc2e0..278b6fe86 100644 --- a/openlp/plugins/songs/lib/upgrade.py +++ b/openlp/plugins/songs/lib/upgrade.py @@ -60,4 +60,4 @@ def upgrade_1(session, metadata, tables): if metadata.bind.url.get_dialect().name != 'sqlite': ForeignKeyConstraint([u'song_id'], [u'songs.id'], table=tables[u'media_files']).create() - return True \ No newline at end of file +