Страницы

Поиск по вопросам

пятница, 10 января 2020 г.

Как сделать проверку на уникальность записи перед добавлениям в таблицу? [дубликат]

#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. Запрос вернёт число строк, удовлетворяющих условию. Если это не ноль – такая строка уже есть в таблице.

Комментариев нет:

Отправить комментарий