mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-07-23 12:21:08 +00:00
fix: Editor page with redundant table fields of the same name in othe… (#1765)
Co-authored-by: 王玉东 <wangyudong@qiyi.com>
This commit is contained in:
parent
5bd946fbdd
commit
9fe060a771
@ -54,7 +54,7 @@ async def get_editor_tables(
|
|||||||
for table in tables:
|
for table in tables:
|
||||||
table_node: DataNode = DataNode(title=table, key=table, type="table")
|
table_node: DataNode = DataNode(title=table, key=table, type="table")
|
||||||
db_node.children.append(table_node)
|
db_node.children.append(table_node)
|
||||||
fields = db_conn.get_fields(table)
|
fields = db_conn.get_fields(table, db_name)
|
||||||
for field in fields:
|
for field in fields:
|
||||||
table_node.children.append(
|
table_node.children.append(
|
||||||
DataNode(
|
DataNode(
|
||||||
|
@ -532,16 +532,17 @@ class RDBMSConnector(BaseConnector):
|
|||||||
ans = cursor.fetchall()
|
ans = cursor.fetchall()
|
||||||
return ans[0][1]
|
return ans[0][1]
|
||||||
|
|
||||||
def get_fields(self, table_name) -> List[Tuple]:
|
def get_fields(self, table_name, db_name=None) -> List[Tuple]:
|
||||||
"""Get column fields about specified table."""
|
"""Get column fields about specified table."""
|
||||||
session = self._db_sessions()
|
session = self._db_sessions()
|
||||||
cursor = session.execute(
|
query = (
|
||||||
text(
|
"SELECT COLUMN_NAME, COLUMN_TYPE, COLUMN_DEFAULT, IS_NULLABLE, "
|
||||||
"SELECT COLUMN_NAME, COLUMN_TYPE, COLUMN_DEFAULT, IS_NULLABLE, "
|
"COLUMN_COMMENT from information_schema.COLUMNS where "
|
||||||
"COLUMN_COMMENT from information_schema.COLUMNS where "
|
f"table_name='{table_name}'"
|
||||||
f"table_name='{table_name}'".format(table_name)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
if db_name is not None:
|
||||||
|
query += f" AND table_schema='{db_name}'"
|
||||||
|
cursor = session.execute(text(query))
|
||||||
fields = cursor.fetchall()
|
fields = cursor.fetchall()
|
||||||
return [(field[0], field[1], field[2], field[3], field[4]) for field in fields]
|
return [(field[0], field[1], field[2], field[3], field[4]) for field in fields]
|
||||||
|
|
||||||
|
@ -155,16 +155,17 @@ class ClickhouseConnector(RDBMSConnector):
|
|||||||
"""Return string representation of dialect to use."""
|
"""Return string representation of dialect to use."""
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
def get_fields(self, table_name) -> List[Tuple]:
|
def get_fields(self, table_name, db_name=None) -> List[Tuple]:
|
||||||
"""Get column fields about specified table."""
|
"""Get column fields about specified table."""
|
||||||
session = self.client
|
session = self.client
|
||||||
|
|
||||||
_query_sql = f"""
|
_query_sql = f"""
|
||||||
SELECT name, type, default_expression, is_in_primary_key, comment
|
SELECT name, type, default_expression, is_in_primary_key, comment
|
||||||
from system.columns where table='{table_name}'
|
from system.columns where table='{table_name}'
|
||||||
""".format(
|
""".format(
|
||||||
table_name
|
table_name
|
||||||
)
|
)
|
||||||
|
if db_name is not None:
|
||||||
|
_query_sql += f" AND database='{db_name}'"
|
||||||
with session.query_row_block_stream(_query_sql) as stream:
|
with session.query_row_block_stream(_query_sql) as stream:
|
||||||
fields = [block for block in stream] # noqa
|
fields = [block for block in stream] # noqa
|
||||||
return fields
|
return fields
|
||||||
|
@ -100,7 +100,7 @@ class DorisConnector(RDBMSConnector):
|
|||||||
for field in fields
|
for field in fields
|
||||||
]
|
]
|
||||||
|
|
||||||
def get_fields(self, table_name) -> List[Tuple]:
|
def get_fields(self, table_name, db_name=None) -> List[Tuple]:
|
||||||
"""Get column fields about specified table."""
|
"""Get column fields about specified table."""
|
||||||
cursor = self.get_session().execute(
|
cursor = self.get_session().execute(
|
||||||
text(
|
text(
|
||||||
|
@ -96,7 +96,7 @@ class PostgreSQLConnector(RDBMSConnector):
|
|||||||
logger.warning(f"postgresql get users error: {str(e)}")
|
logger.warning(f"postgresql get users error: {str(e)}")
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def get_fields(self, table_name) -> List[Tuple]:
|
def get_fields(self, table_name, db_name=None) -> List[Tuple]:
|
||||||
"""Get column fields about specified table."""
|
"""Get column fields about specified table."""
|
||||||
session = self._db_sessions()
|
session = self._db_sessions()
|
||||||
cursor = session.execute(
|
cursor = session.execute(
|
||||||
|
@ -55,7 +55,7 @@ class SQLiteConnector(RDBMSConnector):
|
|||||||
ans = cursor.fetchall()
|
ans = cursor.fetchall()
|
||||||
return ans[0][0]
|
return ans[0][0]
|
||||||
|
|
||||||
def get_fields(self, table_name) -> List[Tuple]:
|
def get_fields(self, table_name, db_name=None) -> List[Tuple]:
|
||||||
"""Get column fields about specified table."""
|
"""Get column fields about specified table."""
|
||||||
cursor = self.session.execute(text(f"PRAGMA table_info('{table_name}')"))
|
cursor = self.session.execute(text(f"PRAGMA table_info('{table_name}')"))
|
||||||
fields = cursor.fetchall()
|
fields = cursor.fetchall()
|
||||||
|
@ -88,7 +88,7 @@ table name should keep its schema name in "
|
|||||||
logger.warning(f"vertica get users error: {str(e)}")
|
logger.warning(f"vertica get users error: {str(e)}")
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def get_fields(self, table_name) -> List[Tuple]:
|
def get_fields(self, table_name, db_name=None) -> List[Tuple]:
|
||||||
"""Get column fields about specified table."""
|
"""Get column fields about specified table."""
|
||||||
session = self._db_sessions()
|
session = self._db_sessions()
|
||||||
cursor = session.execute(
|
cursor = session.execute(
|
||||||
|
Loading…
Reference in New Issue
Block a user