#!/usr/bin/env
# Base class for sqlite programs.
import sqlite3
import CommandLineApp
class SQLiteAppBase(CommandLineApp.CommandLineApp):
"""Base class for accessing sqlite databases.
"""
dbname = 'sqlite.db'
def optionHandler_db(self, name):
"""Specify the database filename.
Defaults to 'sqlite.db'.
"""
self.dbname = name
return
def main(self):
# Subclasses can override this to control the arguments
# used by the program.
self.db_connection = sqlite3.connect(self.dbname)
try:
self.cursor = self.db_connection.cursor()
exit_code = self.takeAction()
except:
# throw away changes
self.db_connection.rollback()
raise
else:
# save changes
self.db_connection.commit()
return exit_code
def takeAction(self):
"""Override this in the actual application.
Return the exit code for the application
if no exception is raised.
"""
raise NotImplementedError('Not implemented!')
if __name__ == '__main__':
SQLiteAppBase().run()