/
database_api.py
65 lines (55 loc) · 2.19 KB
/
database_api.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/usr/bin/env python
from .util import create_url, get_or_else, parse_date
class DatabaseAPI:
"""Access to Database of Treasure Data Service.
This class is inherited by :class:`tdclient.api.API`.
"""
def list_databases(self):
"""Get the list of all the databases of the account.
Returns:
dict: Detailed database information. Each key of the dict is database name.
"""
with self.get("/v3/database/list") as res:
code, body = res.status, res.read()
if code != 200:
self.raise_error("List databases failed", res, body)
js = self.checked_json(body, ["databases"])
result = {}
for m in js["databases"]:
name = m.get("name")
m = dict(m)
m["created_at"] = parse_date(
get_or_else(m, "created_at", "1970-01-01T00:00:00Z")
)
m["updated_at"] = parse_date(
get_or_else(m, "updated_at", "1970-01-01T00:00:00Z")
)
m["org_name"] = None # set None to org for API compatibility
result[name] = m
return result
def delete_database(self, db):
"""Delete a database.
Args:
db (str): Target database name.
Returns:
bool: `True` if succeeded.
"""
with self.post(create_url("/v3/database/delete/{db}", db=db)) as res:
code, body = res.status, res.read()
if code != 200:
self.raise_error("Delete database failed", res, body)
return True
def create_database(self, db, params=None):
"""Create a new database with the given name.
Args:
db (str): Target database name.
params (dict): Extra parameters.
Returns:
bool: `True` if succeeded.
"""
params = {} if params is None else params
with self.post(create_url("/v3/database/create/{db}", db=db), params) as res:
code, body = res.status, res.read()
if code != 200:
self.raise_error("Create database failed", res, body)
return True