Как решить проблему с кодировкой python и clickhouse?

Подключаюсь в python к бд clickhouse через clickhouse_connect и при записи результата запроса в датафрейм появляется ошибка UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfe in position 0: invalid start byte
Код записи:

client = clickhouse_connect.get_client(...)
df=pd.DataFrame(client.query('select * from table', encoding = 'utf8').result_set, 
                columns=['id', 'column_1','column_2']) 

Пробовал менять значение параметра encoding на windows-1251, ISO-8859-1 и пр., но ошибка сохраняется
Код ошибки:

UnicodeDecodeError                        Traceback (most recent call last)
Cell In[66], line 1
      1 df=pd.DataFrame(client.query('select * from table', encoding = 'utf8').result_set, 
      2                columns=['id', 'column_1','column_2'])

File ~/anaconda3/lib/python3.11/site-packages/clickhouse_connect/driver/query.py:254, in QueryResult.result_set(self)
    252 if self.column_oriented:
    253     return self.result_columns
--> 254 return self.result_rows

File ~/anaconda3/lib/python3.11/site-packages/clickhouse_connect/driver/query.py:272, in QueryResult.result_rows(self)
    270 result = []
    271 with self.row_block_stream as stream:
--> 272     for block in stream:
    273         result.extend(block)
    274 self._result_rows = result

File ~/anaconda3/lib/python3.11/site-packages/clickhouse_connect/driver/common.py:195, in StreamContext.__next__(self)
    193 if not self._in_context:
    194     raise ProgrammingError('Stream should be used within a context')
--> 195 return next(self.gen)

File ~/anaconda3/lib/python3.11/site-packages/clickhouse_connect/driver/query.py:292, in QueryResult._row_block_stream(self)
    291 def _row_block_stream(self):
--> 292     for block in self._column_block_stream():
    293         yield list(zip(*block))

File ~/anaconda3/lib/python3.11/site-packages/clickhouse_connect/driver/transform.py:75, in NativeTransform.parse_response.<locals>.gen()
     73 yield first_block
     74 while True:
---> 75     next_block = get_block()
     76     if next_block is None:
     77         return

File ~/anaconda3/lib/python3.11/site-packages/clickhouse_connect/driver/transform.py:38, in NativeTransform.parse_response.<locals>.get_block()
     36 num_rows = source.read_leb128()
     37 for col_num in range(num_cols):
---> 38     name = source.read_leb128_str()
     39     type_name = source.read_leb128_str()
     40     if block_num == 0:

File clickhouse_connect/driverc/buffer.pyx:200, in clickhouse_connect.driverc.buffer.ResponseBuffer.read_leb128_str()

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfe in position 0: invalid start byte

Ответы (1 шт):

Автор решения: darsa

Если огромное кол-во данных, то это похоже на проблему, описанную в этом issue.

Как решение можно поставить compress = False при создании клиента:

client = clickhouse_connect.get_client(..., compress = False)
→ Ссылка