Fix for dropdb()
Change-Id: I2cd4862f02dedaa034aad75900b3a8a2d32da8b9 Closes-Bug: #1323350
This commit is contained in:
parent
f851199db5
commit
34c1ad5dc9
|
@ -15,8 +15,12 @@
|
|||
# under the License.
|
||||
|
||||
import contextlib
|
||||
from sqlalchemy.orm import scoped_session, sessionmaker
|
||||
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy import schema
|
||||
|
||||
from sqlalchemy.engine import reflection
|
||||
from sqlalchemy.orm import scoped_session, sessionmaker
|
||||
from sqlalchemy.orm.query import Query
|
||||
|
||||
from nailgun.settings import settings
|
||||
|
@ -58,6 +62,39 @@ def syncdb():
|
|||
def dropdb():
|
||||
from nailgun.db import migration
|
||||
from nailgun.db.sqlalchemy.models.base import Base
|
||||
conn = engine.connect()
|
||||
trans = conn.begin()
|
||||
|
||||
inspector = reflection.Inspector.from_engine(engine)
|
||||
|
||||
tbs = []
|
||||
all_fks = []
|
||||
|
||||
for table_name in inspector.get_table_names():
|
||||
fks = []
|
||||
for fk in inspector.get_foreign_keys(table_name):
|
||||
if not fk['name']:
|
||||
continue
|
||||
fks.append(
|
||||
schema.ForeignKeyConstraint((), (), name=fk['name'])
|
||||
)
|
||||
t = schema.Table(
|
||||
table_name,
|
||||
Base.metadata,
|
||||
*fks,
|
||||
extend_existing=True
|
||||
)
|
||||
tbs.append(t)
|
||||
all_fks.extend(fks)
|
||||
|
||||
for fkc in all_fks:
|
||||
conn.execute(schema.DropConstraint(fkc))
|
||||
|
||||
for table in tbs:
|
||||
conn.execute(schema.DropTable(table))
|
||||
|
||||
trans.commit()
|
||||
# needed to cleanup custom types
|
||||
Base.metadata.drop_all(bind=engine)
|
||||
migration.drop_migration_meta(engine)
|
||||
|
||||
|
|
Loading…
Reference in New Issue