Конструкция моей базы данных следующая.
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")