Как в psycopg2 реализовывается INSERT или UPDATE в зависимости от того есть ли запись с таким primary key в базе данных?
Версия постгри какая? С 9.5 добавлена команда on conflict. А так вам придётся вначале заапдейтить все совпадения, а после дописать новые. Если хотите можете обернуть все в процедуру и вызывать её для записи.
def update():
    categories = [{'name': 'Ключи', 'id': '73638'}, {'name': 'Мне повезёт!', 'id': '73639'}, {'name': 'Аккаунты', 'id': '73780'}]

    connection = psycopg2.connect(host='127.0.0.1', user='santa', password='bar1703', dbname='test')

    cursor = connection.cursor()

    cursor.executemany('INSERT INTO goods_category(id, title) VALUES (%(id)s, %(name)s) '
                       'ON CONFLICT (id) DO UPDATE SET title=%(name)s', categories)
    connection.commit()

    connection.close()
P.S. В моём debian jessie официальный репозиторий предлагают постгри версии 9.4. Вот статья про установку 9.5 ссылка. Может кому пригодится :)