def __init__(self, name, host="localhost", port="3306", user="******", password="", public_host=None): self.name = canonicalize_db_name(name) self._host = host self.port = port self.conn = Connection(self._host, self.port, user, password, "") self._public_host = public_host
class DatabaseManager(object): def __init__(self, name, host="localhost", port="3306", user="******", password="", public_host=None): self.name = canonicalize_db_name(name) self._host = host self.port = port self.conn = Connection(self._host, self.port, user, password, "") self._public_host = public_host @property def public_host(self): if self._public_host: return self._public_host return self.host def create_database(self): self.conn.open() cursor = self.conn.cursor() sql = "CREATE DATABASE %s default character set utf8 " + \ "default collate utf8_general_ci" cursor.execute(sql % self.name) self.conn.close() def drop_database(self): self.conn.open() cursor = self.conn.cursor() cursor.execute("DROP DATABASE %s" % self.name) self.conn.close() def create_user(self, username, host): self.conn.open() cursor = self.conn.cursor() username = generate_user(username) password = generate_password(username) sql = ("grant all privileges on {0}.* to '{1}'@'%'" " identified by '{2}'") cursor.execute(sql.format(self.name, username, password)) self.conn.close() return username, password def drop_user(self, username, host): self.conn.open() cursor = self.conn.cursor() cursor.execute("drop user '{0}'@'%'".format(username)) self.conn.close() def export(self): cmd = ["mysqldump", "-u", "root", "-d", self.name, "--compact"] return subprocess.check_output(cmd, stderr=subprocess.STDOUT) def is_up(self): try: self.conn.open() return True except: return False finally: self.conn.close() @property def host(self): if self._host == "localhost": return os.environ.get("MYSQLAPI_DATABASE_HOST", "localhost") return self._host