mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-09-12 20:53:48 +00:00
feat(datasource):add oceanbase support (#1622)
Co-authored-by: csunny <cfqsunny@163.com> Co-authored-by: aries_ckt <916701291@qq.com>
This commit is contained in:
@@ -49,6 +49,7 @@ class ConnectorManager(BaseComponent):
|
||||
from dbgpt.datasource.rdbms.conn_hive import HiveConnector # noqa: F401
|
||||
from dbgpt.datasource.rdbms.conn_mssql import MSSQLConnector # noqa: F401
|
||||
from dbgpt.datasource.rdbms.conn_mysql import MySQLConnector # noqa: F401
|
||||
from dbgpt.datasource.rdbms.conn_oceanbase import OceanBaseConnect # noqa: F401
|
||||
from dbgpt.datasource.rdbms.conn_postgresql import ( # noqa: F401
|
||||
PostgreSQLConnector,
|
||||
)
|
||||
@@ -57,6 +58,9 @@ class ConnectorManager(BaseComponent):
|
||||
StarRocksConnector,
|
||||
)
|
||||
from dbgpt.datasource.rdbms.conn_vertica import VerticaConnector # noqa: F401
|
||||
from dbgpt.datasource.rdbms.dialect.oceanbase.ob_dialect import ( # noqa: F401
|
||||
OBDialect,
|
||||
)
|
||||
|
||||
from .connect_config_db import ConnectConfigEntity # noqa: F401
|
||||
|
||||
|
37
dbgpt/datasource/rdbms/conn_oceanbase.py
Normal file
37
dbgpt/datasource/rdbms/conn_oceanbase.py
Normal file
@@ -0,0 +1,37 @@
|
||||
"""Ocean base connect."""
|
||||
|
||||
import logging
|
||||
|
||||
from dbgpt.datasource.rdbms.base import RDBMSConnector
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class OceanBaseConnect(RDBMSConnector):
|
||||
"""Connect Oceanbase Database fetch MetaData.
|
||||
|
||||
Args:
|
||||
Usage:
|
||||
"""
|
||||
|
||||
db_type: str = "oceanbase"
|
||||
db_dialect: str = "mysql"
|
||||
driver: str = "mysql+ob"
|
||||
|
||||
default_db = ["information_schema", "performance_schema", "sys", "mysql"]
|
||||
|
||||
def get_users(self):
|
||||
"""Get_users."""
|
||||
return []
|
||||
|
||||
def get_grants(self):
|
||||
"""Get_grants."""
|
||||
return []
|
||||
|
||||
def get_collation(self):
|
||||
"""Get collation."""
|
||||
return "UTF-8"
|
||||
|
||||
def get_charset(self):
|
||||
"""Get_charset."""
|
||||
return "UTF-8"
|
1
dbgpt/datasource/rdbms/dialect/oceanbase/__init__.py
Normal file
1
dbgpt/datasource/rdbms/dialect/oceanbase/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
"""Oceanbase connect Module."""
|
26
dbgpt/datasource/rdbms/dialect/oceanbase/ob_dialect.py
Normal file
26
dbgpt/datasource/rdbms/dialect/oceanbase/ob_dialect.py
Normal file
@@ -0,0 +1,26 @@
|
||||
"""OB Dialect support."""
|
||||
|
||||
from sqlalchemy.dialects import registry
|
||||
from sqlalchemy.dialects.mysql import pymysql
|
||||
|
||||
|
||||
class OBDialect(pymysql.MySQLDialect_pymysql):
|
||||
"""OBDialect expend."""
|
||||
|
||||
def initialize(self, connection):
|
||||
"""Ob dialect initialize."""
|
||||
super(OBDialect, self).initialize(connection)
|
||||
self._server_version_info = (5, 7, 19)
|
||||
self.server_version_info = (5, 7, 19)
|
||||
|
||||
def _server_version_info(self, connection):
|
||||
"""Ob set fixed version ending compatibility issue."""
|
||||
return (5, 7, 19)
|
||||
|
||||
def get_isolation_level(self, dbapi_connection):
|
||||
"""Ob set fixed version ending compatibility issue."""
|
||||
self.server_version_info = (5, 7, 19)
|
||||
return super(OBDialect, self).get_isolation_level(dbapi_connection)
|
||||
|
||||
|
||||
registry.register("mysql.ob", __name__, "OBDialect")
|
Reference in New Issue
Block a user