Source code for etcdb.execute.ddl.drop

"""Implement DROP queries."""
from pyetcd import EtcdKeyNotFound

from etcdb import OperationalError
from etcdb.execute.ddl import database_exists_or_raise


[docs]def drop_database(etcd_client, tree): """ Drop database. :param etcd_client: Etcd client :type etcd_client: Client :param tree: Parsing tree :type tree: SQLTree :raise OperationalError: if database doesn't exist """ try: etcd_client.rmdir('/%s' % tree.db, recursive=True) except EtcdKeyNotFound: raise OperationalError("Can't drop database '%s';" " database doesn't exist" % tree.db)
[docs]def drop_table(etcd_client, tree, db=None): """ Drop table. :param etcd_client: Etcd client :type etcd_client: Client :param tree: Parsing tree :type tree: SQLTree :param db: Database name to use if not defined in the parsing tree. :type db: str :raise OperationalError: if database is not selected or if table doesn't exist. """ if not db: db = tree.db database_exists_or_raise(etcd_client, db) try: key = '/%s/%s' % (db, tree.table) etcd_client.rmdir(key, recursive=True) except EtcdKeyNotFound: if tree.options['if_exists']: pass else: raise OperationalError("Unknown table '%s'" % tree.table)