#python #sqlite
На этот вопрос уже дан ответ здесь:
Как создать проверку на существование записи?
(1 ответ)
Закрыт 3 года назад.
Есть переменные u_id и re_id с данными.
И есть таблица в базе данных User с ветками: id , u_id и re_id.
Необходимо запретить добавления дубликата, - когда данные с переменными u_id и re_id
уже существуют в таблице
def add_rating(user_id, recipe_id, voice):
conn = sqlite3.connect('db.sqlite')
c = conn.cursor()
c.execute("INSERT INTO User (u_id, re_id) VALUES("+ u_id +","+re_id+")")
conn.commit()
conn.close()
нужна проверка, не по уникальному id , а по вносимым данным , то есть проверять данные
в u_id и re_id таблицы на уникальность
Ответы
Ответ 1
Нужно создать уникальный индекс для этой таблицы и комбинации полей: c.execute("CREATE UNIQUE INDEX User ON t1(u_id, re_id)"); conn.commit()Ответ 2
@tonal подсказал правильное решение – оно позволяет поддерживать правильность данных на стороне БД. Если по какой-то причине нужно перенести эту логику на сторону Питона, можно поступить следующим образом: перед тем, как вставить данные, проверить есть ли они в БД. Для этого можно выполнить запрос вида SELECT COUNT(*) FROM User WHERE u_id=1 AND re_id=2. Запрос вернёт число строк, удовлетворяющих условию. Если это не ноль – такая строка уже есть в таблице.
Комментариев нет:
Отправить комментарий