Changes: * Implement config file loader * Add config-based database connector * Remove database path argument from all tools in bin/
		
			
				
	
	
		
			34 lines
		
	
	
	
		
			941 B
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
	
		
			941 B
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
#! /usr/bin/env python3
 | 
						|
 | 
						|
import argparse
 | 
						|
 | 
						|
from xmet.config import Config
 | 
						|
from xmet.db     import Database
 | 
						|
from xmet.storm  import StormEvent
 | 
						|
 | 
						|
parser = argparse.ArgumentParser(
 | 
						|
    description = 'Ingest events from StormEvent_details_*.csv.gz files'
 | 
						|
)
 | 
						|
 | 
						|
parser.add_argument('--quiet',   action='store_true', help='Suppress output')
 | 
						|
parser.add_argument('--dry-run', action='store_true', help='Do not actually ingest events')
 | 
						|
parser.add_argument('csv-event-details', nargs='+',   help='Compressed storm event details CSV file')
 | 
						|
 | 
						|
args = parser.parse_args()
 | 
						|
 | 
						|
config = Config.load()
 | 
						|
db     = Database.from_config(config)
 | 
						|
 | 
						|
if not args.dry_run:
 | 
						|
    db.execute('begin transaction')
 | 
						|
 | 
						|
for path in getattr(args, 'csv-event-details'):
 | 
						|
    for event in StormEvent.each_from_csv_file(path):
 | 
						|
        if not args.dry_run:
 | 
						|
            db.add(event)
 | 
						|
 | 
						|
    if not args.quiet:
 | 
						|
        print(f"Finished ingesting file {path}")
 | 
						|
 | 
						|
if not args.dry_run:
 | 
						|
    db.commit()
 |