安装驱动程序 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 -
下面的代码块触发了这个问题:
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)