将 Superset 连接到 DB2

问题描述 投票:0回答:0

安装驱动程序 ibm_db_sa 后,我能够添加 DB2 驱动程序并连接到我的 DB2 数据库。但是我在检索表数据时遇到问题并收到以下错误:

2023-05-11 06:12:20,669:DEBUG:superset.stats_logger:[stats_logger] (incr) DatabaseRestApi.table_metadata.success
2023-05-11 06:12:20,669:DEBUG:superset.stats_logger:[stats_logger] (incr) DatabaseRestApi.table_metadata.error
2023-05-11 06:12:20,675:ERROR:flask_appbuilder.api:Object of type LegacyRow is not JSON serializable
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/flask_appbuilder/api/__init__.py", line 110, in wraps
    return f(self, *args, **kwargs)
  File "/home/chihaoui/Desktop/superset/superset/views/base_api.py", line 121, in wraps
    raise ex
  File "/home/chihaoui/Desktop/superset/superset/views/base_api.py", line 115, in wraps
    duration, response = time_function(f, self, *args, **kwargs)
  File "/home/chihaoui/Desktop/superset/superset/utils/core.py", line 1587, in time_function
    response = func(*args, **kwargs)
  File "/home/chihaoui/Desktop/superset/superset/utils/log.py", line 266, in wrapper
    value = f(*args, **kwargs)
  File "/home/chihaoui/Desktop/superset/superset/databases/api.py", line 697, in table_metadata
    return self.response(200, **table_info)
  File "/usr/local/lib/python3.10/dist-packages/flask_appbuilder/api/__init__.py", line 769, in response
    _ret_json = jsonify(kwargs)
  File "/usr/local/lib/python3.10/dist-packages/flask/json/__init__.py", line 302, in jsonify
    f"{dumps(data, indent=indent, separators=separators)}\n",
  File "/usr/local/lib/python3.10/dist-packages/flask/json/__init__.py", line 132, in dumps
    return _json.dumps(obj, **kwargs)
  File "/usr/lib/python3.10/json/__init__.py", line 238, in dumps
    **kw).encode(obj)
  File "/usr/lib/python3.10/json/encoder.py", line 201, in encode
    chunks = list(chunks)
  File "/usr/lib/python3.10/json/encoder.py", line 431, in _iterencode
    yield from _iterencode_dict(o, _current_indent_level)
  File "/usr/lib/python3.10/json/encoder.py", line 405, in _iterencode_dict
    yield from chunks
  File "/usr/lib/python3.10/json/encoder.py", line 438, in _iterencode
    o = _default(o)
  File "/usr/local/lib/python3.10/dist-packages/flask/json/__init__.py", line 51, in default
    return super().default(o)
  File "/usr/lib/python3.10/json/encoder.py", line 179, in default
    raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type LegacyRow is not JSON serializable
192.168.240.1 - - [11/May/2023 06:12:20] "GET /api/v1/database/4/table/COLLECTION/MAXIMO%20%20/ HTTP/1.1" 500 -
2023-05-11 06:12:20,704:INFO:werkzeug:192.168.240.1 - - [11/May/2023 06:12:20] "GET /api/v1/database/4/table/COLLECTION/MAXIMO%20%20/ HTTP/1.1" 500 -

Click here to view the error I get

下面的代码块触发了这个问题:

  self.incr_stats("init", self.table_metadata.__name__)
        try:
            table_info = get_table_metadata(database, table_name, schema_name)
        except SQLAlchemyError as ex:
            self.incr_stats("error", self.table_metadata.__name__)
            return self.response_422(error_msg_from_exception(ex))
        except SupersetException as ex:
            return self.response(ex.status, message=ex.message)
        
        self.incr_stats("success", self.table_metadata.__name__)
        return self.response(200, **table_info)
db2 apache-superset
© www.soinside.com 2019 - 2024. All rights reserved.