Я определенно не эксперт с SQL или sqlalchemy; Я использовал их совсем немного, только делая основные действия CRUD. Но теперь я использую sqlalchemy для сброса последовательности индексов для ряда таблиц:
table_sequences = {
"pump_calendar_event":'pump_calendar_event_index_seq',
"pump_calendar_rule":'pump_calendar_rule_index_seq',
}
for table,seq_name in table_sequences.items():
max_index_query = f'SELECT MAX(index)+1 from public."{table}";'
max_index_results = connection.execute(max_index_query).fetchall()[0][0]
if max_index_results is not None:
update_sequence_query = f'ALTER SEQUENCE "{seq_name}" RESTART WITH {max_index_results};'
connection.execute(update_sequence_query)
print(update_sequence_query)
max_index_results
выполняется правильно и возвращает самый высокий индекс +1. Но connection.execute(update_sequence_query)
не выполняется правильно. Если это терпит неудачу тогда, это терпит неудачу тихо, потому что я не получаю ошибку. Я знаю, что сгенерированный мной запрос правильный, потому что я просто копирую и вставляю его в инструмент запросов в pgAdmin, и он сбрасывает последовательность. Вкратце: он работает, когда я копирую и вставляю его вручную, но не когда я запускаю его с connection.execute(update_sequence_query)
.