Предложение INSERT WHERE NOT EXISTS с использованием переменных Python

Я пытаюсь написать SQL-запрос для вставки строк в таблицу при запуске скрипта. Мне удалось заставить его работать при дублировании данных, но я не могу настроить вставку, которая может определить, является ли запись уникальной.

Я пробовал следовать этим темам:

Самый эффективный способ сделать SQL 'INSERT IF НЕ СУЩЕСТВУЕТ"

Python MySQLdb/MySQL INSERT IGNORE и проверка на игнорирование

В настоящее время я могу заставить систему добавлять все записи, но из-за частоты запуска скрипта база данных заполняется одними и теми же записями. Это мой текущий код:

for post in r.get_subreddit("listentothis").get_new(limit=5):
if 'youtube.com' in post.url or 'youtu.be' in post.url:
    print(str(post.title))
    print(str(post.url))
sql = """INSERT INTO listentothis2(title,url) VALUES ('%s', '%s') WHERE  NOT EXISTS (SELECT 1 FROM listentothis2 WHERE url = '%s') """ % (post.title, post.url, post.url)
    try:
        cursor.execute(sql)
        db.commit()
    except:
        db.rollback()

Я также пробовал:

sql = """INSERT IGNORE INTO listentothis2(title,url) VALUES ('%s', '%s') """ % (post.title, post.url)

Однако при этом добавляются 3 самые последние записи независимо от того, зафиксированы ли они уже в базе данных. Любая помощь приветствуется!


person Andrew fox    schedule 28.05.2016    source источник
comment
Метод, который вам нужен, называется «upsert», а синтаксис mysql версии insert ... on duplicate key update описан здесь: dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html   -  person Simon Fraser    schedule 28.05.2016
comment
Есть еще пара ошибок (первая найденная запись не добавляется и т. д.), но это завершает то, что я хочу сделать! Большое спасибо за быстрый ответ!   -  person Andrew fox    schedule 28.05.2016