Example #1
0
def setup_sqlalchdb(app, default_uri=None, metadata=metadata):
    default = 'sqlite:///%s' % os.path.join(app.instance_dir, 'gh.sqlite')
    db_uri = config_overriding_val(app, default, default_uri, 'db/uri', str)
    app.add_config_var('database/opts', str, '')
    app.connect_event('response-end', cleanup_sqla_session)
    app.connect_event('app-setup', cleanup_sqla_session)

    db_opts = app.cfg['database/opts']
    option_kwargs = len(db_opts) > 0 and _parse_opts(db_opts) or dict()
    app.sqla_db_engine = create_engine(db_uri, **option_kwargs)
    app.sqla_db_meta = metadata
    app.add_data_func(data_init)
Example #2
0
def setup_sqlalchdb(app, default_uri=None, metadata=metadata, initdb=True):
    """Database setup function. Use ``application.add_setup(setup_database)``
    to initialize database use.

    :param app: The Glashammer application object.
    :param default_uri: Override the uri settings from the config.
    :param initdb: Set False to not automatically run create_all
    on metadata on application setup. Use :func:``data_init`` to manually
    initialize the database.
    """

    default = 'sqlite:///%s' % os.path.join(app.instance_dir, 'gh.sqlite')
    app.add_config_var('database/echo', bool, False)
    app.add_config_var('database/uri', str, '')
    app.add_config_var('database/track_queries', bool, False)
    app.add_config_var('database/mysql_pool_recycle', int, 300)
    app.add_config_var('database/mysql_engine', str, 'InnoDB')
    app.add_config_var('database/mysql_table_charset', str, 'utf8')

    app.connect_event('response-start', add_query_debug_headers)
    app.connect_event('response-end', cleanup_sqla_session)
    app.connect_event('app-setup', cleanup_sqla_session)
    if app.cfg['database/track_queries']:
        app.connect_event('after-cursor-executed', request_track_query)
        app.add_request_mixin(QueryTrackRequestMixin)

    if initdb:
        app.add_data_func(data_init)

    db_uri = config_overriding_val(app, default, default_uri, 'database/uri', str)

    global settings
    settings.bind(app)

    app.sqla_db_engine = get_engine()
    app.sqla_db_meta = metadata