У меня проблема, когда некоторые данные возвращаются к исходным значениям после вызова session.commit (). Вот код, который я запускаю в настоящее время:
def delete_source(source_id):
source = Source.query.get_or_404(source_id)
tasks = Task.query.all()
log.info_print(f"source_id = {source_id}")
log.info_print(f"Before commit [1]: {tasks}")
for task in tasks:
if source_id in task.source:
task.source.remove(source_id)
log.info_print(f"Before commit [2]: {tasks}")
db.session.delete(source)
db.session.commit()
log.info_print(f"After commit [1]: {tasks}")
И результат такой:
source_id = 42
Before commit [1]: [Task('ID: 1', 'Source: [42, 15]')]
Before commit [2]: [Task('ID: 1', 'Source: [15]')]
After commit [1]: [Task('ID: 1', 'Source: [42, 15]')]
Примечание о цели здесь ... когда этот маршрут вызывается, он удаляет элемент с source_id из таблицы исходной базы данных, используя db.session.delete(source)
, однако это все равно оставляет source_id в таблице задач (в частности, в исходном массиве), поэтому у меня есть for task in tasks
l oop, который удаляет это из исходного массива.
Успешное удаление значения из массива, как показано в записи журнала Before commit [2]
. Но потом почему-то возвращается. Но удаленный источник этого не делает (чего, конечно, не должно быть!)
С нетерпением жду предложений! Спасибо!