Описание
У меня есть база данных, которую я уже собрал в python3 с использованием sqlite. До этого момента у меня не было проблем с сохранением изменений коммита (с командами вставки и удаления). Тем не менее, я пытаюсь использовать команду обновления, и мне не удалось сохранить изменения (это только изменяет БД в рабочей памяти, несмотря на вызов commit ().
Цель этого фрагмента кода - заменить нулевые значения в базе данных пустой строкой, поскольку у меня есть другая функция, которая не может обрабатывать нулевые данные. Я нашел решение сделать это здесь: Найти нулевые значения из таблицы и заменить его пробелом - sqlite .
Подробнее
Вот текущий код, который я пытаюсь выполнить:
self.cursor.execute(f'UPDATE {tbl_name} SET {col_name} = IFNULL({col_name}, "")')
self.conn.commit()
Этот код в основном проходит по всей базе данных по одному столбцу за раз и заменяет нулевые значения.
Обратите внимание, что self определяется следующим образом:
Database.conn = sqlite3.connect(self.location + self.name)
Database.cursor = sqlite3.connect(self.location + self.name).cursor()
Как было сказано ранее, это правильно работает; однако он не будет вносить изменения в фактическую базу данных. Это проверяется как браузером БД для sqlite, так и повторным извлечением данных при закрытии и повторным выполнением.
Я также отмечу, что если я закрою эту программу и повторно инициализирую ее для повторного запуска, произойдет ошибка из-за блокировки БД, несмотря на то, что последняя строка моего кода:
Database.conn.commit() # Save (commit) the changes
Database.conn.close() # Close database
Заключение
Заранее спасибо, так как я бился головой об стену с этим и еще нигде не нашел подобной проблемы!