diff options
| author | Abhilash Raj | 2014-09-18 19:21:57 +0530 |
|---|---|---|
| committer | Abhilash Raj | 2014-09-18 19:21:57 +0530 |
| commit | c928104c5e49f443ecbe6c21581ebd98175f2451 (patch) | |
| tree | e72f07f4b52697d1dac58a86a312abb38baf3530 /src | |
| parent | f774c7d7fc1f67b80ac701b3d640e2fab24422b4 (diff) | |
| download | mailman-c928104c5e49f443ecbe6c21581ebd98175f2451.tar.gz mailman-c928104c5e49f443ecbe6c21581ebd98175f2451.tar.zst mailman-c928104c5e49f443ecbe6c21581ebd98175f2451.zip | |
reset database by purging all data instead of dropping schema and recreating it
Diffstat (limited to 'src')
| -rw-r--r-- | src/mailman/database/model.py | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/mailman/database/model.py b/src/mailman/database/model.py index ab071e1d3..dedd7a34b 100644 --- a/src/mailman/database/model.py +++ b/src/mailman/database/model.py @@ -24,10 +24,13 @@ __all__ = [ 'Model', ] + +import contextlib from operator import attrgetter from sqlalchemy.ext.declarative import declarative_base +from mailman.config import config class ModelMeta(object): """Do more magic on table classes.""" @@ -51,14 +54,12 @@ class ModelMeta(object): @staticmethod def _reset(db): - Model.metadata.drop_all(db.engine) - Model.metadata.create_all(db.engine) - - # Make sure this is deterministic, by sorting on the storm table name. - # classes = sorted(ModelMeta._class_registry, - # key=attrgetter('__tablename__')) - # print("\n\n" + str(classes) + "\n\n") - # for model_class in classes: - # store.query(model_class).delete() + meta = Model.metadata + engine = config.db.engine + with contextlib.closing(engine.connect()) as con: + trans = con.begin() + for table in reversed(meta.sorted_tables): + con.execute(table.delete()) + trans.commit() Model = declarative_base(cls=ModelMeta) |
