Я обнаружил, что TRUNCATE TABLE .. имеет проблемы с ограничениями внешнего ключа, даже после NOCHECK CONSTRAINT ALL, поэтому вместо этого я использую оператор DELETE FROM. Это означает, что семена идентичности не сбрасываются, вы всегда можете добавить DBCC CHECKIDENT для достижения этого.
Я использую следующий код, чтобы распечатать в окне сообщения sql для обрезания всех таблиц в базе данных , прежде чем запускать его. Это просто усложняет ошибку.
EXEC sp_MSforeachtable 'PRINT ''ALTER TABLE ? NOCHECK CONSTRAINT ALL'''
EXEC sp_MSforeachtable 'print ''DELETE FROM ?'''
EXEC sp_MSforeachtable 'print ''ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all'''
Спасибо @ 2ps, это была проблема. Мой DbObject не получал последние данные из БД, во-первых, добавление db.session.commit () помогло решить проблему.
def petchme(self):
db.session.commit()
self.dbObject = Patch.find_by_status('READY')
if self.dbObject:
print('Patch this')
else:
print('No patchgroup(s) in pipeline')