from pydoc import apropos from sqlalchemy.orm import sessionmaker from recipe_graph import db import json import argparse import logging def load_file(f_name: str): with open(f_name) as f: sites = json.load(f) return sites def setup_argparser() -> argparse.Namespace: parser = argparse.ArgumentParser(description="Import recipes into database") parser.add_argument("file", type=str, help="JSON file with recipe site information") parser.add_argument("-v", "--verbose", action="store_true") args = parser.parse_args() return args def setup_logging(args: argparse.Namespace): if args.verbose: logging.basicConfig(level=logging.INFO) logging.getLogger("sqlalchemy.engine").setLevel(logging.INFO) def main(): args = setup_argparser() setup_logging(args) S = db.get_session() sites = load_file(args.file) with S.begin() as session: for site in sites: logging.info(f"Adding {site}") session.add(db.RecipeSite(**site)) if __name__ == "__main__": main()