2013-09-10 4 views
0

Я использую MySQLConnector для Python для записи всех путей к файлу в определенном дереве файлов в таблицу SQL на регулярной основе (например, на cronjob или такой). То, что я пытаюсь сделать, это записать в таблицу, если путь к файлу является новым для таблицы, иначе обновите таблицу, если она обнаружит существующий путь к файлу, поэтому не будет иметь повторяющихся записей. Я экспериментировал с INSERT IGNORE и ON DUPLICATE KEY UPDATE, но не понимаю, как использовать его для моих нужд, так как он меня терпел. Бита кода, в частности, является:SQL - Заменить или пропустить повторяющиеся записи

вставки = ("INSERT IGNORE INTO storage_folders (путь_к_каталог компании) VALUES ('" + FilePath + "" + компания +') ")

Поэтому я хочу, чтобы таблица обладала уникальными папками_папки, без дубликатов. Столбец «компания» не обязательно должен быть (и не должен) быть уникальным. Может ли кто-нибудь указать мне правильный путь, как мне это сделать?

+0

Если 'folder_path' является первичным ключом (или имеет единственное ограничение), MySQL поддерживает' INSERT ... ON KEY DUPLICATE UPDATE' команды. См. [MYSQL INSERT или UPDATE IF] (http://stackoverflow.com/questions/14259249/mysql-insert-or-update-if) – rutter

ответ

0

Я предпочитаю синтаксис SET, а не () VALUES(), и вам просто нужно убедиться, что вы обновляете столбец, который не является первичным ключом. Таким образом, это предполагает, что folder_path является первичным ключом

"INSERT INTO storage_folders 
SET folder_path='" + filepath + "', company='" + company + '" 
ON DUPLICATE KEY UPDATE company='" + company + "'" 
Смежные вопросы