recipe-graph/src/recipe_graph/insert_sites.py

47 lines
1.2 KiB
Python
Raw Normal View History

2022-10-15 12:32:58 -04:00
from pydoc import apropos
2022-07-18 11:13:53 -04:00
from sqlalchemy.orm import sessionmaker
2022-10-15 12:32:58 -04:00
from recipe_graph import db
2022-07-18 11:13:53 -04:00
import json
import argparse
import logging
2022-10-15 14:19:15 -04:00
import sys
2022-07-18 11:13:53 -04:00
2022-10-15 12:32:58 -04:00
def load_file(f_name: str):
with open(f_name) as f:
sites = json.load(f)
return sites
2022-07-18 11:13:53 -04:00
2022-10-15 12:35:37 -04:00
2022-10-15 14:19:15 -04:00
def setup_argparser(args) -> argparse.Namespace:
2022-10-15 12:32:58 -04:00
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")
2022-07-18 11:13:53 -04:00
2022-10-15 14:19:15 -04:00
return parser.parse_args(args)
2022-07-18 11:13:53 -04:00
2022-10-15 12:35:37 -04:00
2022-10-15 14:19:15 -04:00
def setup_logging(args: argparse.Namespace) -> logging.Logger:
logger = logging.Logger("insert_sites", logging.WARNING)
2022-10-15 12:32:58 -04:00
if args.verbose:
2022-10-15 14:19:15 -04:00
logger.setLevel(logging.INFO)
2022-10-15 12:32:58 -04:00
logging.getLogger("sqlalchemy.engine").setLevel(logging.INFO)
2022-10-15 14:19:15 -04:00
return logger
2022-07-18 11:13:53 -04:00
2022-10-15 12:35:37 -04:00
2022-10-15 12:32:58 -04:00
def main():
2022-10-15 14:19:15 -04:00
args = setup_argparser(sys.argv[1:])
logger = setup_logging(args)
2022-10-15 12:32:58 -04:00
S = db.get_session()
sites = load_file(args.file)
with S.begin() as session:
for site in sites:
2022-10-15 14:19:15 -04:00
logger.info(f"Adding {site}")
2022-10-15 12:32:58 -04:00
session.add(db.RecipeSite(**site))
2022-10-15 12:35:37 -04:00
2022-10-15 12:32:58 -04:00
if __name__ == "__main__":
2022-10-15 12:35:37 -04:00
main()