Я пытаюсь написать 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 самые последние записи независимо от того, зафиксированы ли они уже в базе данных. Любая помощь приветствуется!
insert ... on duplicate key update
описан здесь: dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html - person Simon Fraser   schedule 28.05.2016