Всем привет, пишу парсер расписания. Бывают ситуации когда нету у занятия учителя. Это например дисциплины - Физическая культура и иностранный язык. Потому что люди в разные секции ходят и разные группы посещают, поэтому в источнике для группы у таких занятий нету учителя.
База данных представляет собой 8 различных таблиц и 1 таблица, в которой указаны Id на записи в тех таблицах. Все со связью Один-ко-многим.
Имеется метод, который получает id преподавателя
def get_teacher_id(teacher):
sql = "SELECT id from teacher where name = %s"
data = (teacher,)
rows = select_database(sql, data)
print("Опа ", rows, teacher)
if len(rows) == 1:
return rows[0][0]
else:
sql = "INSERT INTO teacher(name) VALUES (%s)"
return insert_database(sql, data)
Если количество возвращаемых записей равна 1, значит запись уже есть, поэтому мы вернем id, иначе добавим запись и вернем lastrowid.
Сейчас посмотрел полученную после парсинга таблиц, и получилось так, что имеется большое количество записей с NULL (а должно быть 1, это же как бы 1 преподаватель).
Сначала не понял почему так происходит, но потом выполнил запрос к таблице где куча NULL
SELECT
`id`
FROM `teacher`
WHERE name = NULL;
И он вернул 0 записей, поэтому все добавляются все новые и новые записи, хотя могла быть 1.
Как можно это исправить?
Любая операция с NULL, кроме <=>
дает опять же NULL, так что NULL=NULL дает ложь (так же как и NULL!=NULL).
Если значение подставляемое в точку %s действительно NULL, то воспользуйтесь "NULL безопасным сравнением" (<=>
) вместо =
. А если это пустая строка то напишите для нее отдельное условие вида name=%s OR (%s='' AND name is NULL)
Все операторы сравнения MySQL
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Установил Xampp и стартанул через MySQL serverЕсть база, таблицы в форматах *
Очень неожиданно возникла проблема с нехваткой знаний в sql(mysql)Времени их пополнить нет
ЗдравствуйтеПытаюсь сделать POST запрос на ajax страницу с помощью HttpURLConnection
Want to improve this question? Update the question so it's on-topic for Stack Overflow на русском