INSERT или IGNORE с уникальными ограничениями не работает - PullRequest
0 голосов
/ 25 января 2019

Конструкция моей базы данных следующая.

    combinations_sql = """
    CREATE TABLE IF NOT EXISTS combinations 
    (id integer PRIMARY KEY, 
    city text NOT NULL, 
    industry text NOT NULL,
    round text,
    result int,
    CONSTRAINT unq UNIQUE (city, industry, round)
    )
    """

Комбинация города, отрасли, тура уникальна, и когда мне нужно добавить новые данные, я хочу проверить, существуют ли данные в моемdb

Пока что я использую INSERT или IGNORE

    combinations_sql = """
    INSERT OR IGNORE INTO combinations (city, industry, round, result) VALUES (?,?,?,?)
    """

Но я не уверен в правильности этого подхода.Когда я добавляю новые параметры, они по-прежнему отображаются в БД, хотя они не должны.

РЕДАКТИРОВАТЬ: Мой обходной путь, который решил проблему, но производительность хуже:

    combinations_sql = """
    SELECT * FROM combinations WHERE city = ? AND industry = ?
    """
    cursor.execute(combinations_sql, (city,industry))
    entry = cursor.fetchone()

    if entry is None:
        combinations_sql = """
        INSERT INTO combinations (city, industry , round, result) VALUES (?,?,?, ?)
        """
        cursor.execute(combinations_sql, (city, industry, round, result))
        print("Entry added")
    else:
        print("Entry found")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...