Подтвердить что ты не робот

Как очистить базу данных, сбросив все записи с помощью sqlalchemy?

Я использую SQlAlchemy. Я хочу удалить все записи, эффективно представленные в базе данных, но я не хочу отказаться от таблицы/базы данных.

Я пробовал со следующим кодом.

con = engine.connect()
trans = con.begin()

con.execute(table.delete())
trans.commit()

Кажется, он не очень эффективен, так как я повторяю всю таблицу, присутствующую в базе данных. Может ли кто-нибудь предложить мне лучший и эффективный способ сделать это?

Любая помощь здесь очень ценится.

4b9b3361

Ответ 1

Если моделирование основывается на существующей схеме БД (обычно используется autoload=True), вы не можете избежать удаления данных в каждой таблице. MetaData.sorted_tables пригодится:

for tbl in reversed(meta.sorted_tables):
    engine.execute(tbl.delete())

Если ваши модели определяют полную схему, нет ничего проще, чем drop_all/create_all (как уже указывалось @jadkik94).

Кроме того, TRUNCATE никогда не будет работать над таблицами, на которые ссылается ForeignKeys, что значительно ограничивает использование.

Ответ 2

Для меня было выполнено tbl.drop(engine), но не engine.execute(tbl.delete())

SQLAlchemy 0.8.0b2 и Python 2.7.3