2016-10-04 2 views
0

Я использую MySQLdb, чтобы вставить записи в мою базу данных, я создал таблицу с UNIQUE KEY на domain field.
Избегайте повторной ошибки ввода

Хотелось бы избежать ошибки: IntegrityError: (1062, "Duplicate entry 'xxxxx.com' for key 'domain'").

Как я могу это сделать?

Мой код здесь:

try: 
    CONN = MySQLdb.connect(host=SQL_HOST, 
          user=SQL_USER, 
          passwd=SQL_PASSWD, 
          db=SQL_DB) 
except MySQLdb.Error, e: 
    print "Error %d: %s" % (e.args[0], e.args[1]) 
    sys.exit(1) 

cursor = CONN.cursor() 

def insert_table(domain, trust_flow, citation_flow, ref_domains, ext_back_links): 
    sql = "INSERT INTO %s (domain, TrustFlow, CitationFlow, RefDomains, ExtBackLinks) values('%s','%s','%s','%s','%s')" % (SQL_TABLE, domain, trust_flow, citation_flow, ref_domains, ext_back_links) 
    if cursor.execute(sql): 
     CONN.commit() 
+1

Стоп вставляя записи, которые имеют такое же значение, что и существующие записи. –

ответ

2

Попробуйте использовать INSERT ... ON DUPLCATE KEY UPDATE

INSERT INTO %s (domain, TrustFlow, CitationFlow, RefDomains, ExtBackLinks) values('%s','%s','%s','%s','%s') 
ON DUPLICATE KEY UPDATE TrustFlow = VALUES(TrustFlow), CitationFlow = VALUES(CitationFlow) .... 
Смежные вопросы