Вставка только уникальных строк в SQLite (python)

Я использую cursor.executemany для вставки партий строк из CSV-файлов в таблицу SQLite, некоторые из которых, как ожидается, будут дублироваться на основе поля первичного ключа. Когда я выполняю команду, я предсказуемо получаю ошибку целостности и ничего не встает.

Как я могу выборочно вставлять только не дублированные строки без необходимости вручную отфильтровывать их раньше времени? Я знаю, что только в чистом Python вы можете просто создать исключение ошибки и пропустить повторяющуюся строку – есть ли что-то подобное, которое я могу реализовать в этом случае?

2 Solutions collect form web for “Вставка только уникальных строк в SQLite (python)”

Просто используйте INSERT OR IGNORE чтобы игнорировать дубликаты.

http://sqlite.org/lang_insert.html

Один из вариантов – просто написать цикл вручную с ошибкой, а не использовать executemany .

Psuedocode:

 for row in csvfile: try: cursor.execute('INSERT INTO X (Y) VALUES (%s)' % row[rowdatapoint]) except IntegrityError: pass 

Вероятно, он не так эффективен, как executemany , но он поймает вашу ошибку, не executemany в более сложные SQL-изменения, которые, возможно, связаны с созданием гигантской строки INSERT SQL.

  • Продолжить загрузку после IntegrityError
  • как удалить u из sqlite3 cursor.fetchall () в python
  • Передача переменной строки в LIKE в SQLite (Python)
  • Как быстро SQLite через Python
  • Как выполнить запрос на основе даты и времени с использованием SQLite в Python?
  • Как использовать подготовленные инструкции для вставки MULTIPLE записей в SQlite с помощью Python / Django?
  • Python прописывает в sqlalchemy
  • Имя переменной в sqlite
  • Python - лучший язык программирования в мире.