[feat] Support Hive Conn (#1215)

Co-authored-by: xiuzhu <edy@dodge-pro.local>
This commit is contained in:
xiuzhu9527
2024-03-03 09:50:11 -06:00
committed by GitHub
parent 0f3ad67c85
commit 54ba663646
10 changed files with 988 additions and 3 deletions

View File

@@ -9,6 +9,7 @@ from dbgpt.datasource.rdbms.base import RDBMSDatabase
from dbgpt.datasource.rdbms.conn_clickhouse import ClickhouseConnect
from dbgpt.datasource.rdbms.conn_doris import DorisConnect
from dbgpt.datasource.rdbms.conn_duckdb import DuckDbConnect
from dbgpt.datasource.rdbms.conn_hive import HiveConnect
from dbgpt.datasource.rdbms.conn_mssql import MSSQLConnect
from dbgpt.datasource.rdbms.conn_mysql import MySQLConnect
from dbgpt.datasource.rdbms.conn_postgresql import PostgreSQLDatabase

View File

@@ -0,0 +1,58 @@
from typing import Any, Optional
from urllib.parse import quote
from urllib.parse import quote_plus as urlquote
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from dbgpt.datasource.rdbms.base import RDBMSDatabase
class HiveConnect(RDBMSDatabase):
"""db type"""
db_type: str = "hive"
"""db driver"""
driver: str = "hive"
"""db dialect"""
dialect: str = "hive"
@classmethod
def from_uri_db(
cls,
host: str,
port: int,
user: str,
pwd: str,
db_name: str,
engine_args: Optional[dict] = None,
**kwargs: Any,
) -> RDBMSDatabase:
"""Construct a SQLAlchemy engine from uri database.
Args:
host (str): database host.
port (int): database port.
user (str): database user.
pwd (str): database password.
db_name (str): database name.
engine_args (Optional[dict]):other engine_args.
"""
db_url: str = f"{cls.driver}://{host}:{str(port)}/{db_name}"
if user and pwd:
db_url: str = f"{cls.driver}://{quote(user)}:{urlquote(pwd)}@{host}:{str(port)}/{db_name}"
return cls.from_uri(db_url, engine_args, **kwargs)
def table_simple_info(self):
return []
def get_users(self):
return []
def get_grants(self):
return []
def get_collation(self):
"""Get collation."""
return "UTF-8"
def get_charset(self):
return "UTF-8"