Сброс ID подсчета после удаления таблицы ()
-
21-12-2019 - |
Вопрос
для целей тестирования, я очищаю (удалить) каждую таблицу перед выполнением кода.
for table in reversed(db.metadata.sorted_tables):
engine.execute(table.delete())
do_stuff()
.
Тем не менее, значения GensodicTagcode новых данных начнутся с того места, где выключен предыдущий id
:
Первая итерация:
id | value
-----+---------
1 | hi
2 | there
.
Вторая итерация (Удалить таблицу, вставить новые данные):
id | value
-----+---------
3 | good
4 | day
.
Есть ли способ сбросить счет id
, когда я удаляю таблицу?
Редактировать: кажется, я сломал его, таблица вообще не очищается
config.py
SQLALCHEMY_DATABASE_URI = 'postgresql://postgres:myPassword@localhost/myDatabase'
app.py
app = Flask(__name__)
app.config.from_pyfile('config.py')
db = SQLAlchemy(app)
models.py
from app import app, db
def clear():
for table in reversed(db.metadata.sorted_tables):
db.engine.execute('TRUNCATE TABLE ' + table.name + ' RESTART IDENTITY CASCADE')
.
Таблица все еще добавляется (используя id
и db.session.add_all()
).Однако генеракодицетагкод ничего не делает.Когда я вошел в систему пользователя db.session.commit()
в clear()
и напрямую выполнить postgres
, он работает.
terminal
дает правильные имена.Это ведет меня полагать, что есть что-то не так с генеракодицетагкодом, но это не имеет большого смысла, так как TRUNCATE TABLE myTable RESTART IDENTITY CASCADE
работает
Решение
Вызовите TRUNCATE TABLE MyTable RESTART IDENTITY;
для каждой таблицы в петле вместо вызова table.delete()
- это должно сбросить последовательность автоматической приращения.