Example #1
0
def initialize_connection(preload_database_mode):
    global __engine_url, __engine_params

    if preload_database_mode == PreloadDatabaseMode.EMPTY_FILE:
        # Delete preload database, so an empty one can be created in its place
        database_util.delete_preload_database()
        # Set engine arguments
        __engine_url = config.PRELOAD_DATABASE_SQLITE_FILE_URI
        __engine_params = {}
    elif preload_database_mode == PreloadDatabaseMode.POPULATED_MEMORY:
        # Build an in-memory SQLite Database from the SQL script
        connection = sqlite3.connect(":memory:")
        connection.executescript(database_util.get_preload_database_script_as_string())
        connection.commit()
        # Set engine arguments
        __engine_url = "sqlite://"
        __engine_params = { 'poolclass':StaticPool, 'creator':lambda:connection }
    elif preload_database_mode == PreloadDatabaseMode.POPULATED_FILE:
        # Delete preload database, and use the script to rebuild it
        database_util.generate_preload_database_from_script()
        # Set engine arguments
        __engine_url = config.PRELOAD_DATABASE_SQLITE_FILE_URI
        __engine_params = {}
    else:
        raise ValueError('Invalid PreloadDatabaseMode value.')
Example #2
0
def initialize_connection(preload_database_mode):
    global __engine_url, __engine_params

    if preload_database_mode == PreloadDatabaseMode.EMPTY_FILE:
        # Delete preload database, so an empty one can be created in its place
        database_util.delete_preload_database()
        # Set engine arguments
        __engine_url = config.PRELOAD_DATABASE_SQLITE_FILE_URI
        __engine_params = {}
    elif preload_database_mode == PreloadDatabaseMode.POPULATED_MEMORY:
        # Build an in-memory SQLite Database from the SQL script
        connection = sqlite3.connect(":memory:")
        connection.executescript(database_util.get_preload_database_script_as_string())
        connection.commit()
        # Set engine arguments
        __engine_url = "sqlite://"
        __engine_params = {'poolclass': StaticPool, 'creator': lambda: connection}
    elif preload_database_mode == PreloadDatabaseMode.POPULATED_FILE:
        # Delete preload database, and use the script to rebuild it
        database_util.generate_preload_database_from_script()
        # Set engine arguments
        __engine_url = config.PRELOAD_DATABASE_SQLITE_FILE_URI
        __engine_params = {}
    else:
        raise ValueError('Invalid PreloadDatabaseMode value.')
    database.Session.commit()

def process_bin_sizes(sheet):
    print 'Processing bin sizes'
    for row in sheet:
        if 'stream' in row:
            stream = Stream().query.filter(Stream.name == row.get('stream')).first()
            if stream is None:
                print 'Can not find stream %s in preload' % row.get('stream')
            else:
                bin_size_text = row.get('binsize')
                bin_size = config.DEFAULT_BIN_SIZE_MINUTES
                if bin_size_text is not None:
                    bin_size = int(bin_size_text)
                else:
                    print 'Using default bin size for stream %s with blank row in sheet' % stream.name
                stream.binsize_minutes = bin_size
    database.Session.commit()


def create_db():
    process_parameter_funcs(sheet_generator('ParameterFunctions'))
    process_parameters(sheet_generator('ParameterDefs'))
    process_streams(sheet_generator('ParameterDictionary'))
    process_bin_sizes(sheet_generator('BinSizes'))

if __name__ == '__main__':
    create_db()
    database_util.generate_script_from_preload_database()
    database_util.delete_preload_database()