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