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)
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