#!/usr/bin/env python3 import psycopg import yaml import sys with open('config.yml', 'r', encoding='UTF-8') as data: config = yaml.safe_load(data.read()) with open(config['response_tokens'], 'r', encoding='UTF-8') as data: valid_tokens = {item for item in yaml.safe_load(data.read())} with open(sys.argv[1], 'r', encoding='UTF-8') as data: phrases = yaml.safe_load(data.read()) with psycopg.connect(config['db_spec']) as conn: query_phrases = 'INSERT INTO responses (tokens, response) VALUES (%s, %s)' with conn.cursor() as cur: for regexref, responses in phrases.items(): tokens = set(regexref.split(',')) if tokens != tokens & valid_tokens: print(f'{str(tokens)} failed to add!') continue token_string = ','.join(sorted(tokens)) for response in responses: cur.execute('SAVEPOINT sp1') try: cur.execute( query_phrases, (token_string, response)) except psycopg.errors.UniqueViolation as err: cur.execute('ROLLBACK TO SAVEPOINT sp1') # print(err) continue cur.execute('RELEASE SAVEPOINT sp1') conn.commit() #for item in names: # usernames = names[item] # for username in usernames: # cur.execute('INSERT INTO names (tg_id, name) VALUES (%s, %s)', # (item, username)) #conn.commit()