Я выполняю миграцию на юг в проекте Django, который использует Sql Server и pyodbc. Это обратная миграция, поэтому Юг пытается удалить несколько моих таблиц.
Юг выполняет следующий метод для удаления таблиц:
def delete_table(self, table_name, cascade=True):
"""
Deletes the table 'table_name'.
"""
params = (self.quote_name(table_name), )
if cascade:
self.execute('DROP TABLE %s CASCADE;' % params)
else:
self.execute('DROP TABLE %s;' % params)
drop_table = alias('delete_table')
Проблема в том, что сервер Sql не поддерживает каскадные отбрасывания, поэтому миграция завершается с ошибкой:
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'CASCADE'. (156) (SQLExecDirectW)")
Я хочу написать патч для юга, чтобы он работал с Sql Server. Каков наилучший способ симулировать DROP CASCADE? Я думаю, что оба решения, использующие Python или чистый SQL, были бы правильными.