Skip to content

Commit 6296401

Browse files
committed
Include Params in Database GETs
1 parent f629eb5 commit 6296401

File tree

1 file changed

+20
-11
lines changed

1 file changed

+20
-11
lines changed

mindsdb_sdk/databases.py

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import List, Union
1+
from typing import Dict, List, Union
22

33
from mindsdb_sql_parser.ast.mindsdb import CreateDatabase
44
from mindsdb_sql_parser.ast import DropDatabase, Identifier
@@ -15,7 +15,7 @@ class Database:
1515
Allows to work with database (datasource): to use tables and make raw queries
1616
1717
To run native query
18-
At this moment query is just saved in Qeury object and not executed
18+
At this moment query is just saved in Query object and not executed
1919
2020
>>> query = database.query('select * from table1') # returns Query
2121
@@ -27,11 +27,12 @@ class Database:
2727
2828
"""
2929

30-
def __init__(self, server, name, engine=None):
30+
def __init__(self, server, name: str, engine: str = None, params: Dict = None):
3131
self.server = server
3232
self.name = name
3333
self.engine = engine
3434
self.api = server.api
35+
self.params = params
3536

3637
self.tables = Tables(self, self.api)
3738

@@ -49,6 +50,7 @@ def query(self, sql: str) -> Query:
4950
Make raw query to integration
5051
5152
:param sql: sql of the query
53+
:param database: name of database to query (uses current database by default)
5254
:return: Query object
5355
"""
5456
return Query(self.api, sql, database=self.name)
@@ -65,7 +67,7 @@ class Databases(CollectionBase):
6567
# create
6668
6769
>>> db = databases.create('example_db',
68-
... type='postgres',
70+
... engine='postgres',
6971
... connection_args={'host': ''})
7072
7173
# drop database
@@ -81,11 +83,16 @@ class Databases(CollectionBase):
8183
def __init__(self, api):
8284
self.api = api
8385

84-
def _list_databases(self):
86+
def _list_databases(self) -> Dict[str, Database]:
8587
data = self.api.sql_query(
86-
"select NAME, ENGINE from information_schema.databases where TYPE='data'"
88+
"select NAME, ENGINE, CONNECTION_DATA from information_schema.databases where TYPE='data'"
8789
)
88-
return dict(zip(data.NAME, data.ENGINE))
90+
name_to_db = {}
91+
for _, row in data.iterrows():
92+
name_to_db[row["NAME"]] = Database(
93+
self, row["NAME"], engine=row["ENGINE"], params=row["CONNECTION_DATA"]
94+
)
95+
return name_to_db
8996

9097
def list(self) -> List[Database]:
9198
"""
@@ -94,9 +101,11 @@ def list(self) -> List[Database]:
94101
:return: list of Database objects
95102
"""
96103
databases = self._list_databases()
97-
return [Database(self, name, engine=engine) for name, engine in databases.items()]
104+
return list(databases.values())
98105

99-
def create(self, name: str, engine: Union[str, Handler], connection_args: dict) -> Database:
106+
def create(
107+
self, name: str, engine: Union[str, Handler], connection_args: Dict
108+
) -> Database:
100109
"""
101110
Create new integration and return it
102111
@@ -114,7 +123,7 @@ def create(self, name: str, engine: Union[str, Handler], connection_args: dict)
114123
parameters=connection_args,
115124
)
116125
self.api.sql_query(ast_query.to_string())
117-
return Database(self, name, engine=engine)
126+
return Database(self, name, engine=engine, params=connection_args)
118127

119128
def drop(self, name: str):
120129
"""
@@ -135,4 +144,4 @@ def get(self, name: str) -> Database:
135144
databases = self._list_databases()
136145
if name not in databases:
137146
raise AttributeError("Database doesn't exist")
138-
return Database(self, name, engine=databases[name])
147+
return databases[name]

0 commit comments

Comments
 (0)