Esempio n. 1
0
def download_and_import(filename, database_type, database, schema, username,
                        password=None, port=None, host='localhost',
                        use_cache=False, download_dir=DEFAULT_DOWNLOAD_DIR,
                        language_code=DEFAULT_LANGUAGE_CODE,
                        keep_existing_data=False, recreate_tables=False):

    config.update(schema_name=schema, database_type=database_type,
                  database=database, username=username, password=password,
                  port=port, host=host)

    db_session = config.get_db_session()

    download_dir = normalize_path(download_dir)
    download_config = get_download_config(filename, language_code)
    local_filepaths = []
    for filename, opts in download_config.items():
        for local_filepath in download(opts, download_dir, use_cache):
            if opts.get('unzip') is True:
                local_filepath = unzip(
                    local_filepath, filename_to_extract=filename,
                    extract_dir=os.path.dirname(local_filepath))
            local_filepaths.append(local_filepath)

    create_geoname_tables(db_session, recreate_tables=recreate_tables)
    if not keep_existing_data:
        purge_geoname_tables(db_session)
    run_importers(db_session, download_dir, local_filepaths)
Esempio n. 2
0
from sqlalchemy_geonames.sqla import PASSWORD_NOT_SET, config
from sqlalchemy_geonames.files import filename_config
from sqlalchemy_geonames.sqla import create_geoname_tables, \
    purge_geoname_tables
# noinspection PyProtectedMember
from sqlalchemy_geonames.utils import normalize_path, mkdir_p


class RawArgumentDefaultsHelpFormatter(argparse.ArgumentDefaultsHelpFormatter,
                                       argparse.RawTextHelpFormatter):
    """Retain both raw text descriptions and argument defaults"""
    pass


DATABASE_CHOICES = ('postgresql',)
DEFAULT_DOWNLOAD_DIR = normalize_path('~/.sqlageonames')
DEFAULT_LANGUAGE_CODE = 'en'
PRIMARY_GEONAME_FILENAMES = [name for name, opts in filename_config.items()
                             if opts.get('is_primary') is True]
LANGUAGE_CHOICES = sorted(set(opts['language_code'] for name, opts
                              in filename_config.items()
                              if 'language_code' in opts))


def get_progress_bar(maxval):
    widgets = [Percentage(), ' ', Bar(), ' ', ETA(), ' ', FileTransferSpeed()]
    return ProgressBar(widgets=widgets, maxval=maxval)


def get_local_filepath(filename, download_dir=DEFAULT_DOWNLOAD_DIR):
    return os.path.join(download_dir, filename)