clickhttp


Nameclickhttp JSON
Version 0.1.2 PyPI version JSON
download
home_pagehttps://github.com/0xMihalich/clickhttp
SummaryWorking with Clickhouse Database via HTTP Protocol | Работа с БД Clickhouse по HTTP-протоколу
upload_time2024-10-22 14:17:10
maintainerNone
docs_urlNone
author0xMihalich
requires_pythonNone
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Clickhttp Library for Working with Clickhouse Database via HTTP Protocol

## Features

* Reading DataFrame based on SQL queries
* Executing multiple SQL queries with the return of the last result as a DataFrame
* Automatic creation of a temporary table with data on the MergeTree engine based on the query and returning its name
* Inserting into a table from a DataFrame
* Support for compressed mode (the server accepts and sends data packed in gzip)
* Support for working through a proxy server
* Ability to set a timeout for the session
* Support for DataFrame in formats: dask, numpy, pandas, polars, python, vaex
* Session initialization via Airflow connection ID or manual specification of the connector

## Composition of library

*clickhouse_multiquery*
 — Standalone function for executing multiquery to Clickhouse DBMS without returning data

*ClickHttpSession*
— Class for working with Clickhouse via HTTP protocol

*UserConn*
— NamedTuple object for creating a connection. Contains data for initialization:

* user      — Type: str, client login
* password  — Type: str, client password
* host      — Type: str, host address
* port      — Type: int, port for HTTP connection (typically 8123 with standard server settings)
* database  — Type: str, schema in the database (can be None)

*get_conn*
— Function for retrieving UserConn object based on Airflow Connection ID

*ClickHttpError*
— Base error class

*ClosedError*
— Error when attempting to perform an action after session has been closed

*FrameError*
— Error retrieving DataFrame

*FrameMultiQueryError*
— Error executing multiquery

*InsertError*
— Error executing insert into table

*FrameType*
— Enum that lists the supported DataFrame types.
  It is necessary for determining output data format for read operations when executing the methods read_frame and send_multiquery.
  To select required data type, you need to pass parameter at class: frame_type=FrameType.<your_required_data_type>.
  It is also important to understand that library does not install additional modules and uses those that user has installed independently.
  During library initialization, all uninstalled modules will be displayed in a warning message along with a command for installation.

* dask   — DataFrame as format dask.dataframe.DataFrame
* numpy  — DataFrame as format numpy.ndarray. Column names are absent
* pandas — DataFrame as format pandas.DataFrame
* polars — DataFrame as format polars.DataFrame
* python — Nested list of standard Python objects. Column names are absent
* vaex   — DataFrame as format vaex.dataframe.DataFrameLocal

*Frame*
— NamedTuple object returned when executing the methods read_frame and send_multiquery for ClickHttpSession class

* columns    — list of column names
* types      — list of original data types
* data       — DataFrame containing data
* time_read  — time taken to execute query by Clickhouse server in ms
* bytes_read — number of bytes sent by the server

## Class Methods

    close           — Close the session. Executed when using context manager with.
    execute         — Execute a query to the database without returning a result.
    insert_frame    — Write data from DataFrame to table.
    read_frame      — Return result of query as a DataFrame.
    reopen          — Open a new session. If a session is already open, it will close the current one and open a new one.
    send_multiquery — Execute multiquerн to database and return result of last query as DataFrame.
    set_proxy       — Specify a proxy server for connection. Running without parameters removes a proxy setting if it was previously specified.
    temp_query      — Create a temporary table with data based on sended query and return its name.

## Static Methods, Nested Objects, and Attributes

    change_mode     — Static method. Changes the query execution mode (compression/no compression).
    chunk_size      — Attribute. Size of the chunks of the sent frame in bytes, default is 50 MB. Can be specified during class initialization.
    database        — Attribute. Schema in the Clickhouse database. The value is taken from the UserConn object or Airflow connection_id. Set during class initialization.
    frame_type      — Enum object FrameType, default is FrameType.pandas. Set during class initialization.
    headers         — Headers of the transmitted requests. Formed during class initialization, contains personal data.
    is_closed       — Attribute. Boolean, True when the session is open.
    is_compressed   — Attribute. Boolean indicating whether packets are compressed for sending and receiving, default is True. Can be specified during class initialization.
    output_format   — Static method. Displays the selected method for obtaining the DataFrame from the server.
    proxy           — Attribute. String address of the proxy server, default is absent. Can be specified during class initialization.
    session_id      — Attribute. Unique ID of the current session as a string representation of UUIDv4. Created automatically.
    sess            — Instance of the requests.Session class.
    timeout         — Attribute. Time to wait for a response from the server in seconds, default is 10. Can be specified during class initialization.
    url             — Attribute. Address of the server, formed during class initialization.

## Declared magic methods of the class (without description)

    __enter__
    __exit__
    __repr__
    __str__

## Installation (Windows/Linux/MacOs)

### Install from directory

```shell
pip install .
```

### Install from git

```shell
pip install git+https://github.com/0xMihalich/clickhttp
```

### Install from pip

```shell
pip install clickhttp
```

## Examples

Examples of usage are described in examples.ipynb

[Download examples.ipynb file from link on Google Drive](https://drive.google.com/file/d/1NiZtHW8Nmj1IUBTwmLm8exbkttydhkG5/)

## FAQ

Q: What is this needed for?

A: In some ETL processes, there is a need to create multiple CTEs followed by data aggregation into a final selection.
Clickhouse does not create CTEs; instead, it executes the same query declared in the WITH section every time in all places of the main query,
wasting RAM resources and server computing power. An alternative to CTEs could be a temporary table with data, but Clickhouse does not
support executing multiple queries. This library serves as an alternative to clickhouse-client and clickhouse_driver.
It does not claim to be the best; however, some features of this solution may seem interesting.
The main goal of the library is to execute multiple queries within a single session, addressing the issue of creating
a Temporary Table with subsequent data retrieval.

Q: Why does clickhttp.ClickHttpSession not work in asynchronous mode if Clickhouse, as developers claim, is asynchronous?

A: Although the Clickhouse server operates in asynchronous mode, operations within a single session can only be synchronous,
and the delay between requests within a single session should not exceed 60 seconds.

Q: Why are only backports.zoneinfo and requests listed in the requirements.txt file? Where are numpy, pandas, polars, dask, vaex?

A: Starting from version 0.0.5, all imports not directly related to the operation of Session->Request | Session->Response have been excluded
from explicit imports and are now added only if they were previously installed by the user, as not all users utilize all declared DataFrame
formats in their work. Some may only need pandas, others numpy, while some use vaex. Now, importing the library will issue warning messages
about missing components but will continue to function. If a user does not even have numpy, all received and transmitted data will be obtained
in the format of nested Python lists; otherwise, there will be an option to choose the type of DataFrame received,
with the default class initialized as pandas.DataFrame.

Q: How can I check which DataFrame types are currently available to me?

A: You can use the built-in method get_names for clickhttp.FrameType. Executing this method will provide you with a list of available formats.

Q: I installed the missing library, but when executing clickhttp.FrameType.get_names(), it is not there. What should I do?

A:

1. Ensure that the library is installed in the correct version of Python or in the correct virtual environment.
2. Make sure that the interpreter has been restarted after installing the library.
3. After completing the first two steps, re-execute clickhttp.FrameType.get_names() and verify that the required format has appeared.

## Version History

### 0.1.2

* All docstrings have been translated into English
* Documentation and examples are now available in two languages
* Added MIT License
* Updated setup.py

### 0.1.1

* Added streaming for reading Big Data
* Refactored code to fix flake8 warnings
* Fixed warnings in README.md
* Resolved compatibility issues with earlier versions of Python
* Added Python versions 3.7 - 3.13 to workflow tests

### 0.1.0

* Added a function to check if the connection object belongs to NamedTuple
* Added a simple check for the ClickHttpSession class in workflow tests
* Changed the protocol to HTTPS for port 443
* The formatter function now removes extra spaces
* Added the project URL to setup.py

### 0.0.9

* Fixed the connection object check
* Added simple tests for workflows
* Corrected a typo in CHANGELOG.md

### 0.0.8

* Added SQL query formatting (with comment removal)
* Added a dependency for the third-party library sqlparse (SQL formatter) in requirements.txt
* Allowed the use of third-party NamedTuple objects for creating the connection object
* Increased default CHUNK_SIZE to 50 MB
* Project mirror moved to GitHub

### 0.0.7

* Fixed the missing requirements.txt file error

## 0.0.6

* Some code fixes
* Moved FAQ.txt and CHANGELOG.md to README.md
* Uploaded examples.ipynb to Google Drive
* First package publication on pip

## 0.0.5

* Added FAQ.txt
* Added CHANGELOG.md
* Updated README.md
* Updated examples.ipynb
* Added an optional use_columns attribute for the insert_table method
* Minor code fixes

## 0.0.4

* The version with pre-installed dask and vaex packages has been moved to a separate branch
* Only the requests module dependency remains in requirements.txt
* DTYPE and FrameType objects are created dynamically based on user-installed components
* Refactored some functions and methods
* Added an execute method for sending commands that do not require returning a frame

## 0.0.3

* Added support for dask.dataframe.DataFrame
* Added support for vaex.dataframe.DataFrameLocal
* The version supporting only pandas.DataFrame and polars.DataFrame has been moved to a separate branch

### 0.0.2

* Fixed logging output for some messages
* Replaced logging.warning with logging.info for message output during method execution

### 0.0.1

First version of the library
______________________________________________________________________________________________________________________
# библиотека clickhttp для работы с БД Clickhouse по HTTP-протоколу

## Возможности

* чтение DataFrame на основании SQL-запроса
* выполнение множественного SQL-запроса с возвратом последнего результата как DataFrame
* автоматическое создание временной таблицы с данными на движке MergeTree на основании запроса и возврат ее названия
* insert в таблицу из DataFrame
* поддержка compressed режима работы (сервер принимает и отправляет данные, упакованные в gzip)
* поддержка работы через прокси-сервер
* возможность задать timeout для сессии
* поддержка DataFrame в форматах: dask, numpy, pandas, polars, python, vaex
* инициализация сессии через Airflow connection id либо ручное указание коннектора

## Состав библиотеки

*clickhouse_multiquery*
 — Самостоятельная функция для выполнения множественных запросов к РСУБД Clickhouse без возврата данных.

*ClickHttpSession*
— Класс для работы с Clickhouse по HTTP-протоколу.

*UserConn*
— Объект NamedTuple для создания соединения. Содержит данные для инициализации:

* user      — Тип: str, логин клиента
* password  — Тип: str, пароль клиента
* host      — Тип: str, адрес хоста
* port      — Тип: int, порт для http подключения (при стандартной настройке сервера обычно равен 8123)
* database  — Тип: str, схема в БД (может быть None)

*get_conn*
— Функция для получения объекта UserConn на основании Airflow Connection ID

*ClickHttpError*
— Базовый класс ошибки

*ClosedError*
— Ошибка при попытке выполнить действие после закрытия сессии

*FrameError*
— Ошибка при получении DataFrame

*FrameMultiQueryError*
— Ошибка при выполнении множественного запроса

*InsertError*
— Ошибка при выполнении Isert в таблицу

*FrameType*
— Enum, перечисляющий поддерживаемые типы DataFrame.
  Необходим для определения выходного формата данных для операций чтения при выполнении методов read_frame и send_multiquery.
  Для выбора необходимого типа данных нужно передать в класс параметр frame_type=FrameType.<необходимый тип датафрейм>.
  Так же необходимо понимать, что сама библиотека не устанавливает дополнительные модули и использует те, что пользователь установил самостоятельно.
  При инициализации библиотеки все неустановленные модули будут выведены в warning message с командой для установки.

* dask   — Датафрейм в формате dask.dataframe.DataFrame
* numpy  — Датафрейм в формате numpy.ndarray. Имена колонок отсутствуют
* pandas — Датафрейм в формате pandas.DataFrame
* polars — Датафрейм в формате polars.DataFrame
* python — Вложенный список стандартных объектов python. Имена колонок отсутствуют
* vaex   — Датафрейм в формате vaex.dataframe.DataFrameLocal

*Frame*
— Объект NamedTuple, возвращаемый при выполнении методов read_frame и send_multiquery для класса ClickHttpSession

* columns    — список названий колонок
* types      — список оригинальных типов данных
* data       — DataFrame с данными
* time_read  — время выполнения запроса сервером Clickhouse в мс
* bytes_read — количество байт, отправленных сервером

## Методы класса

    close           — Закрыть сессию. Выполняется при использовании контекстного менеджера with.
    execute         — Выполнить запрос к базе без возвращения результата.
    insert_frame    — Записать данные из DataFrame в таблицу.
    read_frame      — Вернуть результат запроса в виде DataFrame.
    reopen          — Открыть новую сессию. В случае если сессия уже открыта, закроет текущую и откроет новую.
    send_multiquery — Выполнить множественный запрос к БД и вернуть результат последнего запроса как DataFrame.
    set_proxy       — Указать прокси-сервер для соединения. Запуск без параметра удаляет настройку прокси если она ранее была задана.
    temp_query      — На основании запроса создать временную таблицу с данными и вернуть ее название.

## Статические методы, вложенные объекты и атрибуты

    change_mode     — Статический метод. Меняет режим выполнения запросов (сжатие/без сжатия).
    chunk_size      — Атрибут. Размер кусков отправляемого фрейма в байтах, по умолчанию 50мб. Может быть задан при инициализации класса.
    database        — Атрибут. Схема в БД Clickhouse. Значение берется из объекта UserConn либо connection_id Airflow. Задается при инициализации класса.
    frame_type      — Enum-объект FrameType, по умолчанию FrameType.pandas. Задается при инициализации класса FrameType.
    headers         — Заголовки передаваемых запросов. Формируется при инициализации класса, содержит персональные данные.
    is_closed       — Атрибут. Булево, при открытой сессии True.
    is_compressed   — Атрибут. Булево, указывающее на сжатие пакетов для отправки и получения, по умолчанию True. Может быть задан при инициализации класса.
    output_format   — Статический метод. Отображает выбранный метод получения DataFrame от сервера.
    proxy           — Атрибут. Строка адреса прокси-сервера, по умолчанию отсутствует. Может быть задан при инициализации класса.
    session_id      — Атрибут. Уникальный ID текущей сессии как строковое представление UUIDv4. Создается автоматически.
    sess            — Экземпляр класса requests.Session
    timeout         — Атрибут. Время ожидания ответа от сервера в секундах, по умолчанию 10. Может быть задан при инициализации класса.
    url             — Атрибут. Адрес сервера, формируется при инициализации класса.

## Объявленные магические методы класса (без описания)

    __enter__
    __exit__
    __repr__
    __str__

## Установка (Windows/Linux/MacOs)

### Установка из директории

```shell
pip install .
```

### Установка из git

```shell
pip install git+https://github.com/0xMihalich/clickhttp
```

### Установка из pip

```shell
pip install clickhttp
```

## Примеры

Примеры работы на русском описаны в examples_ru.ipynb

[Скачать файл examples_ru.ipynb по ссылке в google](https://drive.google.com/file/d/1hn2ke7M9SsxHsJbNrBE_qyJfuILUcj-g/)

## FAQ

В: Для чего это нужно?

О: В некоторых ETL процессах возникает необходимость в создании нескольких CTE с последующей агрегацией данных в итоговую выборку.
Clickhouse не создает CTE, а каждый раз выполняет один и тот же запрос, объявленный в секции with во всех местах основного запроса,
тратя впустую ресурсы ОЗУ и вычислительные мощности сервера.
Альтернативой CTE может быть временная таблица с данными, при этом Clickhouse не поддерживает выполнение множественных запросов.
Данная библиотека является альтернативой clickhouse-client и clickhouse_driver. Она ни сколько не претендует на звание лучшей,
тем не менее некоторые возможности данного решения могут показаться интересными.
Главная цель библиотеки - выполнение множественных запросов внутри одной сессии, решающее проблему создания Temporary Table с
последующим получением данных.

В: Почему clickhttp.ClickHttpSession не работает в асинхронном режиме, если Clickhouse, как уверяют разработчики, является асинхронным?

О: Хотя сервер Clickhouse выполняет работу в асинхронном режиме, работа внутри одной сессии может быть только синхронной
и задержка между запросами внутри одной сессии не должна превышать более 60 секунд.

В: Почему в файле requirements.txt только backports.zoneinfo и requests? Куда делись numpy, pandas, polars, dask, vaex?

О: Начиная с версии 0.0.5 все импорты, не относящиеся непосредственно к работе Сессия->Запрос | Сессия->Ответ, были исключены
из явных импортов и теперь добавляются только если ранее они были установлены пользователем, поскольку не все пользователи
используют в своей работе все заявленные форматы Dataframe. Кому-то достаточно pandas, кому-то numpy, а кто-то пользуется vaex.
Теперь импорт библиотеки выведет в warning сообщения об отсутствующих компонентах, но продолжит работу.
В случае, если у пользователя нет даже numpy, все получаемые и передаваемые данные будут получены в формате вложенных списков python,
иначе будет возможность выбора типа принимаемого DataFrame, а по умолчанию класс будет инициализирован с типом pandas.DataFrame.

В: Как проверить какие типы датафрейм у меня доступны на данный момент?

О: Вы можете использовать встроенный метод get_names для clickhttp.FrameType. Выполнив данный метод Вы получите список доступных форматов.

В: Установил недостающую библиотеку, но при выполнении clickhttp.FrameType.get_names() ее нет. Что делать?

О:

1. Убедитесь, что библиотека установлена в правильную версию python или в верное виртуальное окружение.
2. Убедитесь, что интерпретатор был перезапущен после установки библиотеки.
3. После выполнения первых двух шагов повторно выполните clickhttp.FrameType.get_names() и убедитесь, что необходимый формат появился.

## История версий

### 0.1.2

* Все докстринги переведены на английский
* Документация и examples теперь на двух языках
* Добавлена Лицензия MIT
* Обновлен setup.py

### 0.1.1

* Добавлен стриминг при чтении Big Data
* Проведен рефактор кода для исправления flake8 warnings
* Исправлены ворнинги в README.md
* Исправлена проблема совместимости с ранними версиями python
* В тесты для workflow добавлены версии python 3.7 - 3.13

### 0.1.0

* Добавлена функция проверки объекта соединения на принадлежность к NamedTuple
* В тесты для workflow добавлена простая проверка работы класса ClickHttpSession
* Для порта 443 добавлено изменение протокола на https
* Функция formatter теперь удаляет лишние пробелы
* В setup.py добавлен url проекта на github

### 0.0.9

* Исправлена проверка объекта connections
* Добавлены простые тесты для workflows
* Исправлена опечатка в CHANGELOG.md

### 0.0.8

* Добавлено форматирование SQL запроса (с удалением комментариев)
* В requirements.txt добавлена зависимость для сторонней библиотеки sqlparse (форматтер SQL)
* Разрешено использование сторонних объектов NamedTuple для создания объекта connection
* CHUNK_SIZE по умолчанию увеличен до 50 МБ
* Зеркало проекта перенесено на github

### 0.0.7

* Исправлена ошибка отсутствия файла requirements.txt

### 0.0.6

* Некоторые исправления кода
* FAQ.txt и CHANGELOG.md перенесены в README.md
* examples.ipynb загружен на google drive
* Первая публикация пакета в pip

### 0.0.5

* Добавлен FAQ.txt
* Добавлен CHANGELOG.md
* Обновлен README.md
* Обновлен examples.ipynb
* Добавлен необязательный атрибут use_columns для метода insert_table
* Мелкие исправления кода

### 0.0.4

* Версия с предустановленными пакетами dask и vaex перенесена в отдельную ветку
* В requirements.txt оставлена зависимость только от модуля requests
* Формирование объектов DTYPE и FrameType производится динамически в зависимости от установленных пользователем компонентов
* Проведен рефакторинг некоторых функций и методов
* Добавлен метод execute для отправки команд, не требующих возвращения фрейма

### 0.0.3

* Добавлена поддержка dask.dataframe.DataFrame
* Добавлена поддержка vaex.dataframe.DataFrameLocal
* Версия с поддержкой только pandas.DataFrame и polars.DataFrame перенесена в отдельную ветку

### 0.0.2

* Исправлен вывод в лог некоторых сообщений
* Замена logging.warning на logging.info для вывода сообщения при выполнении методов

### 0.0.1

Первая версия библиотеки

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/0xMihalich/clickhttp",
    "name": "clickhttp",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": null,
    "author": "0xMihalich",
    "author_email": "bayanmobile87@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/59/3e/f7b6ebdddafe8b27d0d1afba1547ed071ce383ac1a6946189f9684c72bfd/clickhttp-0.1.2.tar.gz",
    "platform": null,
    "description": "# Clickhttp Library for Working with Clickhouse Database via HTTP Protocol\r\n\r\n## Features\r\n\r\n* Reading DataFrame based on SQL queries\r\n* Executing multiple SQL queries with the return of the last result as a DataFrame\r\n* Automatic creation of a temporary table with data on the MergeTree engine based on the query and returning its name\r\n* Inserting into a table from a DataFrame\r\n* Support for compressed mode (the server accepts and sends data packed in gzip)\r\n* Support for working through a proxy server\r\n* Ability to set a timeout for the session\r\n* Support for DataFrame in formats: dask, numpy, pandas, polars, python, vaex\r\n* Session initialization via Airflow connection ID or manual specification of the connector\r\n\r\n## Composition of library\r\n\r\n*clickhouse_multiquery*\r\n \u2014 Standalone function for executing multiquery to Clickhouse DBMS without returning data\r\n\r\n*ClickHttpSession*\r\n\u2014 Class for working with Clickhouse via HTTP protocol\r\n\r\n*UserConn*\r\n\u2014 NamedTuple object for creating a connection. Contains data for initialization:\r\n\r\n* user      \u2014 Type: str, client login\r\n* password  \u2014 Type: str, client password\r\n* host      \u2014 Type: str, host address\r\n* port      \u2014 Type: int, port for HTTP connection (typically 8123 with standard server settings)\r\n* database  \u2014 Type: str, schema in the database (can be None)\r\n\r\n*get_conn*\r\n\u2014 Function for retrieving UserConn object based on Airflow Connection ID\r\n\r\n*ClickHttpError*\r\n\u2014 Base error class\r\n\r\n*ClosedError*\r\n\u2014 Error when attempting to perform an action after session has been closed\r\n\r\n*FrameError*\r\n\u2014 Error retrieving DataFrame\r\n\r\n*FrameMultiQueryError*\r\n\u2014 Error executing multiquery\r\n\r\n*InsertError*\r\n\u2014 Error executing insert into table\r\n\r\n*FrameType*\r\n\u2014 Enum that lists the supported DataFrame types.\r\n  It is necessary for determining output data format for read operations when executing the methods read_frame and send_multiquery.\r\n  To select required data type, you need to pass parameter at class: frame_type=FrameType.<your_required_data_type>.\r\n  It is also important to understand that library does not install additional modules and uses those that user has installed independently.\r\n  During library initialization, all uninstalled modules will be displayed in a warning message along with a command for installation.\r\n\r\n* dask   \u2014 DataFrame as format dask.dataframe.DataFrame\r\n* numpy  \u2014 DataFrame as format numpy.ndarray. Column names are absent\r\n* pandas \u2014 DataFrame as format pandas.DataFrame\r\n* polars \u2014 DataFrame as format polars.DataFrame\r\n* python \u2014 Nested list of standard Python objects. Column names are absent\r\n* vaex   \u2014 DataFrame as format vaex.dataframe.DataFrameLocal\r\n\r\n*Frame*\r\n\u2014 NamedTuple object returned when executing the methods read_frame and send_multiquery for ClickHttpSession class\r\n\r\n* columns    \u2014 list of column names\r\n* types      \u2014 list of original data types\r\n* data       \u2014 DataFrame containing data\r\n* time_read  \u2014 time taken to execute query by Clickhouse server in ms\r\n* bytes_read \u2014 number of bytes sent by the server\r\n\r\n## Class Methods\r\n\r\n    close           \u2014 Close the session. Executed when using context manager with.\r\n    execute         \u2014 Execute a query to the database without returning a result.\r\n    insert_frame    \u2014 Write data from DataFrame to table.\r\n    read_frame      \u2014 Return result of query as a DataFrame.\r\n    reopen          \u2014 Open a new session. If a session is already open, it will close the current one and open a new one.\r\n    send_multiquery \u2014 Execute multiquer\u043d to database and return result of last query as DataFrame.\r\n    set_proxy       \u2014 Specify a proxy server for connection. Running without parameters removes a proxy setting if it was previously specified.\r\n    temp_query      \u2014 Create a temporary table with data based on sended query and return its name.\r\n\r\n## Static Methods, Nested Objects, and Attributes\r\n\r\n    change_mode     \u2014 Static method. Changes the query execution mode (compression/no compression).\r\n    chunk_size      \u2014 Attribute. Size of the chunks of the sent frame in bytes, default is 50 MB. Can be specified during class initialization.\r\n    database        \u2014 Attribute. Schema in the Clickhouse database. The value is taken from the UserConn object or Airflow connection_id. Set during class initialization.\r\n    frame_type      \u2014 Enum object FrameType, default is FrameType.pandas. Set during class initialization.\r\n    headers         \u2014 Headers of the transmitted requests. Formed during class initialization, contains personal data.\r\n    is_closed       \u2014 Attribute. Boolean, True when the session is open.\r\n    is_compressed   \u2014 Attribute. Boolean indicating whether packets are compressed for sending and receiving, default is True. Can be specified during class initialization.\r\n    output_format   \u2014 Static method. Displays the selected method for obtaining the DataFrame from the server.\r\n    proxy           \u2014 Attribute. String address of the proxy server, default is absent. Can be specified during class initialization.\r\n    session_id      \u2014 Attribute. Unique ID of the current session as a string representation of UUIDv4. Created automatically.\r\n    sess            \u2014 Instance of the requests.Session class.\r\n    timeout         \u2014 Attribute. Time to wait for a response from the server in seconds, default is 10. Can be specified during class initialization.\r\n    url             \u2014 Attribute. Address of the server, formed during class initialization.\r\n\r\n## Declared magic methods of the class (without description)\r\n\r\n    __enter__\r\n    __exit__\r\n    __repr__\r\n    __str__\r\n\r\n## Installation (Windows/Linux/MacOs)\r\n\r\n### Install from directory\r\n\r\n```shell\r\npip install .\r\n```\r\n\r\n### Install from git\r\n\r\n```shell\r\npip install git+https://github.com/0xMihalich/clickhttp\r\n```\r\n\r\n### Install from pip\r\n\r\n```shell\r\npip install clickhttp\r\n```\r\n\r\n## Examples\r\n\r\nExamples of usage are described in examples.ipynb\r\n\r\n[Download examples.ipynb file from link on Google Drive](https://drive.google.com/file/d/1NiZtHW8Nmj1IUBTwmLm8exbkttydhkG5/)\r\n\r\n## FAQ\r\n\r\nQ: What is this needed for?\r\n\r\nA: In some ETL processes, there is a need to create multiple CTEs followed by data aggregation into a final selection.\r\nClickhouse does not create CTEs; instead, it executes the same query declared in the WITH section every time in all places of the main query,\r\nwasting RAM resources and server computing power. An alternative to CTEs could be a temporary table with data, but Clickhouse does not\r\nsupport executing multiple queries. This library serves as an alternative to clickhouse-client and clickhouse_driver.\r\nIt does not claim to be the best; however, some features of this solution may seem interesting.\r\nThe main goal of the library is to execute multiple queries within a single session, addressing the issue of creating\r\na Temporary Table with subsequent data retrieval.\r\n\r\nQ: Why does clickhttp.ClickHttpSession not work in asynchronous mode if Clickhouse, as developers claim, is asynchronous?\r\n\r\nA: Although the Clickhouse server operates in asynchronous mode, operations within a single session can only be synchronous,\r\nand the delay between requests within a single session should not exceed 60 seconds.\r\n\r\nQ: Why are only backports.zoneinfo and requests listed in the requirements.txt file? Where are numpy, pandas, polars, dask, vaex?\r\n\r\nA: Starting from version 0.0.5, all imports not directly related to the operation of Session->Request | Session->Response have been excluded\r\nfrom explicit imports and are now added only if they were previously installed by the user, as not all users utilize all declared DataFrame\r\nformats in their work. Some may only need pandas, others numpy, while some use vaex. Now, importing the library will issue warning messages\r\nabout missing components but will continue to function. If a user does not even have numpy, all received and transmitted data will be obtained\r\nin the format of nested Python lists; otherwise, there will be an option to choose the type of DataFrame received,\r\nwith the default class initialized as pandas.DataFrame.\r\n\r\nQ: How can I check which DataFrame types are currently available to me?\r\n\r\nA: You can use the built-in method get_names for clickhttp.FrameType. Executing this method will provide you with a list of available formats.\r\n\r\nQ: I installed the missing library, but when executing clickhttp.FrameType.get_names(), it is not there. What should I do?\r\n\r\nA:\r\n\r\n1. Ensure that the library is installed in the correct version of Python or in the correct virtual environment.\r\n2. Make sure that the interpreter has been restarted after installing the library.\r\n3. After completing the first two steps, re-execute clickhttp.FrameType.get_names() and verify that the required format has appeared.\r\n\r\n## Version History\r\n\r\n### 0.1.2\r\n\r\n* All docstrings have been translated into English\r\n* Documentation and examples are now available in two languages\r\n* Added MIT License\r\n* Updated setup.py\r\n\r\n### 0.1.1\r\n\r\n* Added streaming for reading Big Data\r\n* Refactored code to fix flake8 warnings\r\n* Fixed warnings in README.md\r\n* Resolved compatibility issues with earlier versions of Python\r\n* Added Python versions 3.7 - 3.13 to workflow tests\r\n\r\n### 0.1.0\r\n\r\n* Added a function to check if the connection object belongs to NamedTuple\r\n* Added a simple check for the ClickHttpSession class in workflow tests\r\n* Changed the protocol to HTTPS for port 443\r\n* The formatter function now removes extra spaces\r\n* Added the project URL to setup.py\r\n\r\n### 0.0.9\r\n\r\n* Fixed the connection object check\r\n* Added simple tests for workflows\r\n* Corrected a typo in CHANGELOG.md\r\n\r\n### 0.0.8\r\n\r\n* Added SQL query formatting (with comment removal)\r\n* Added a dependency for the third-party library sqlparse (SQL formatter) in requirements.txt\r\n* Allowed the use of third-party NamedTuple objects for creating the connection object\r\n* Increased default CHUNK_SIZE to 50 MB\r\n* Project mirror moved to GitHub\r\n\r\n### 0.0.7\r\n\r\n* Fixed the missing requirements.txt file error\r\n\r\n## 0.0.6\r\n\r\n* Some code fixes\r\n* Moved FAQ.txt and CHANGELOG.md to README.md\r\n* Uploaded examples.ipynb to Google Drive\r\n* First package publication on pip\r\n\r\n## 0.0.5\r\n\r\n* Added FAQ.txt\r\n* Added CHANGELOG.md\r\n* Updated README.md\r\n* Updated examples.ipynb\r\n* Added an optional use_columns attribute for the insert_table method\r\n* Minor code fixes\r\n\r\n## 0.0.4\r\n\r\n* The version with pre-installed dask and vaex packages has been moved to a separate branch\r\n* Only the requests module dependency remains in requirements.txt\r\n* DTYPE and FrameType objects are created dynamically based on user-installed components\r\n* Refactored some functions and methods\r\n* Added an execute method for sending commands that do not require returning a frame\r\n\r\n## 0.0.3\r\n\r\n* Added support for dask.dataframe.DataFrame\r\n* Added support for vaex.dataframe.DataFrameLocal\r\n* The version supporting only pandas.DataFrame and polars.DataFrame has been moved to a separate branch\r\n\r\n### 0.0.2\r\n\r\n* Fixed logging output for some messages\r\n* Replaced logging.warning with logging.info for message output during method execution\r\n\r\n### 0.0.1\r\n\r\nFirst version of the library\r\n______________________________________________________________________________________________________________________\r\n# \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 clickhttp \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0411\u0414 Clickhouse \u043f\u043e HTTP-\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443\r\n\r\n## \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438\r\n\r\n* \u0447\u0442\u0435\u043d\u0438\u0435 DataFrame \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u0430\r\n* \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u043e\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043a\u0430\u043a DataFrame\r\n* \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u0434\u0432\u0438\u0436\u043a\u0435 MergeTree \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0435\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\r\n* insert \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438\u0437 DataFrame\r\n* \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 compressed \u0440\u0435\u0436\u0438\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b (\u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435, \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432 gzip)\r\n* \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440\r\n* \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u0442\u044c timeout \u0434\u043b\u044f \u0441\u0435\u0441\u0441\u0438\u0438\r\n* \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 DataFrame \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445: dask, numpy, pandas, polars, python, vaex\r\n* \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0435\u0441\u0441\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 Airflow connection id \u043b\u0438\u0431\u043e \u0440\u0443\u0447\u043d\u043e\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440\u0430\r\n\r\n## \u0421\u043e\u0441\u0442\u0430\u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438\r\n\r\n*clickhouse_multiquery*\r\n \u2014 \u0421\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u0420\u0421\u0423\u0411\u0414 Clickhouse \u0431\u0435\u0437 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445.\r\n\r\n*ClickHttpSession*\r\n\u2014 \u041a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Clickhouse \u043f\u043e HTTP-\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443.\r\n\r\n*UserConn*\r\n\u2014 \u041e\u0431\u044a\u0435\u043a\u0442 NamedTuple \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438:\r\n\r\n* user      \u2014 \u0422\u0438\u043f: str, \u043b\u043e\u0433\u0438\u043d \u043a\u043b\u0438\u0435\u043d\u0442\u0430\r\n* password  \u2014 \u0422\u0438\u043f: str, \u043f\u0430\u0440\u043e\u043b\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u0430\r\n* host      \u2014 \u0422\u0438\u043f: str, \u0430\u0434\u0440\u0435\u0441 \u0445\u043e\u0441\u0442\u0430\r\n* port      \u2014 \u0422\u0438\u043f: int, \u043f\u043e\u0440\u0442 \u0434\u043b\u044f http \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f (\u043f\u0440\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u0440\u0430\u0432\u0435\u043d 8123)\r\n* database  \u2014 \u0422\u0438\u043f: str, \u0441\u0445\u0435\u043c\u0430 \u0432 \u0411\u0414 (\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c None)\r\n\r\n*get_conn*\r\n\u2014 \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 UserConn \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 Airflow Connection ID\r\n\r\n*ClickHttpError*\r\n\u2014 \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043e\u0448\u0438\u0431\u043a\u0438\r\n\r\n*ClosedError*\r\n\u2014 \u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u0441\u0435\u0441\u0441\u0438\u0438\r\n\r\n*FrameError*\r\n\u2014 \u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 DataFrame\r\n\r\n*FrameMultiQueryError*\r\n\u2014 \u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430\r\n\r\n*InsertError*\r\n\u2014 \u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 Isert \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443\r\n\r\n*FrameType*\r\n\u2014 Enum, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u044e\u0449\u0438\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0442\u0438\u043f\u044b DataFrame.\r\n  \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0447\u0442\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 read_frame \u0438 send_multiquery.\r\n  \u0414\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432 \u043a\u043b\u0430\u0441\u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 frame_type=FrameType.<\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0442\u0438\u043f \u0434\u0430\u0442\u0430\u0444\u0440\u0435\u0439\u043c>.\r\n  \u0422\u0430\u043a \u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0441\u0430\u043c\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u0435, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.\r\n  \u041f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432\u0441\u0435 \u043d\u0435\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u044b \u0432 warning message \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438.\r\n\r\n* dask   \u2014 \u0414\u0430\u0442\u0430\u0444\u0440\u0435\u0439\u043c \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 dask.dataframe.DataFrame\r\n* numpy  \u2014 \u0414\u0430\u0442\u0430\u0444\u0440\u0435\u0439\u043c \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 numpy.ndarray. \u0418\u043c\u0435\u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442\r\n* pandas \u2014 \u0414\u0430\u0442\u0430\u0444\u0440\u0435\u0439\u043c \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 pandas.DataFrame\r\n* polars \u2014 \u0414\u0430\u0442\u0430\u0444\u0440\u0435\u0439\u043c \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 polars.DataFrame\r\n* python \u2014 \u0412\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 python. \u0418\u043c\u0435\u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442\r\n* vaex   \u2014 \u0414\u0430\u0442\u0430\u0444\u0440\u0435\u0439\u043c \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 vaex.dataframe.DataFrameLocal\r\n\r\n*Frame*\r\n\u2014 \u041e\u0431\u044a\u0435\u043a\u0442 NamedTuple, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0439 \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 read_frame \u0438 send_multiquery \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u0430 ClickHttpSession\r\n\r\n* columns    \u2014 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u043a\u043e\u043b\u043e\u043d\u043e\u043a\r\n* types      \u2014 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445\r\n* data       \u2014 DataFrame \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438\r\n* time_read  \u2014 \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c Clickhouse \u0432 \u043c\u0441\r\n* bytes_read \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0430\u0439\u0442, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c\r\n\r\n## \u041c\u0435\u0442\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0441\u0430\r\n\r\n    close           \u2014 \u0417\u0430\u043a\u0440\u044b\u0442\u044c \u0441\u0435\u0441\u0441\u0438\u044e. \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 with.\r\n    execute         \u2014 \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u0431\u0430\u0437\u0435 \u0431\u0435\u0437 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430.\r\n    insert_frame    \u2014 \u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 DataFrame \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443.\r\n    read_frame      \u2014 \u0412\u0435\u0440\u043d\u0443\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432 \u0432\u0438\u0434\u0435 DataFrame.\r\n    reopen          \u2014 \u041e\u0442\u043a\u0440\u044b\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0441\u0435\u0441\u0441\u0438\u044e. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0441\u043b\u0438 \u0441\u0435\u0441\u0441\u0438\u044f \u0443\u0436\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u0430, \u0437\u0430\u043a\u0440\u043e\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0438 \u043e\u0442\u043a\u0440\u043e\u0435\u0442 \u043d\u043e\u0432\u0443\u044e.\r\n    send_multiquery \u2014 \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u0411\u0414 \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a\u0430\u043a DataFrame.\r\n    set_proxy       \u2014 \u0423\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f. \u0417\u0430\u043f\u0443\u0441\u043a \u0431\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043f\u0440\u043e\u043a\u0441\u0438 \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0440\u0430\u043d\u0435\u0435 \u0431\u044b\u043b\u0430 \u0437\u0430\u0434\u0430\u043d\u0430.\r\n    temp_query      \u2014 \u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435.\r\n\r\n## \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b\r\n\r\n    change_mode     \u2014 \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0435\u0442\u043e\u0434. \u041c\u0435\u043d\u044f\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 (\u0441\u0436\u0430\u0442\u0438\u0435/\u0431\u0435\u0437 \u0441\u0436\u0430\u0442\u0438\u044f).\r\n    chunk_size      \u2014 \u0410\u0442\u0440\u0438\u0431\u0443\u0442. \u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u0443\u0441\u043a\u043e\u0432 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0440\u0435\u0439\u043c\u0430 \u0432 \u0431\u0430\u0439\u0442\u0430\u0445, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 50\u043c\u0431. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0434\u0430\u043d \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430.\r\n    database        \u2014 \u0410\u0442\u0440\u0438\u0431\u0443\u0442. \u0421\u0445\u0435\u043c\u0430 \u0432 \u0411\u0414 Clickhouse. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u0435\u0440\u0435\u0442\u0441\u044f \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 UserConn \u043b\u0438\u0431\u043e connection_id Airflow. \u0417\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430.\r\n    frame_type      \u2014 Enum-\u043e\u0431\u044a\u0435\u043a\u0442 FrameType, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e FrameType.pandas. \u0417\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 FrameType.\r\n    headers         \u2014 \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.\r\n    is_closed       \u2014 \u0410\u0442\u0440\u0438\u0431\u0443\u0442. \u0411\u0443\u043b\u0435\u0432\u043e, \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 True.\r\n    is_compressed   \u2014 \u0410\u0442\u0440\u0438\u0431\u0443\u0442. \u0411\u0443\u043b\u0435\u0432\u043e, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043d\u0430 \u0441\u0436\u0430\u0442\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e True. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0434\u0430\u043d \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430.\r\n    output_format   \u2014 \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0435\u0442\u043e\u0434. \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f DataFrame \u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.\r\n    proxy           \u2014 \u0410\u0442\u0440\u0438\u0431\u0443\u0442. \u0421\u0442\u0440\u043e\u043a\u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0434\u0430\u043d \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430.\r\n    session_id      \u2014 \u0410\u0442\u0440\u0438\u0431\u0443\u0442. \u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 ID \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 UUIDv4. \u0421\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.\r\n    sess            \u2014 \u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 requests.Session\r\n    timeout         \u2014 \u0410\u0442\u0440\u0438\u0431\u0443\u0442. \u0412\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043e\u0442\u0432\u0435\u0442\u0430 \u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 10. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0434\u0430\u043d \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430.\r\n    url             \u2014 \u0410\u0442\u0440\u0438\u0431\u0443\u0442. \u0410\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430.\r\n\r\n## \u041e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0441\u0430 (\u0431\u0435\u0437 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f)\r\n\r\n    __enter__\r\n    __exit__\r\n    __repr__\r\n    __str__\r\n\r\n## \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 (Windows/Linux/MacOs)\r\n\r\n### \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438\u0437 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438\r\n\r\n```shell\r\npip install .\r\n```\r\n\r\n### \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438\u0437 git\r\n\r\n```shell\r\npip install git+https://github.com/0xMihalich/clickhttp\r\n```\r\n\r\n### \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438\u0437 pip\r\n\r\n```shell\r\npip install clickhttp\r\n```\r\n\r\n## \u041f\u0440\u0438\u043c\u0435\u0440\u044b\r\n\r\n\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 examples_ru.ipynb\r\n\r\n[\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u0444\u0430\u0439\u043b examples_ru.ipynb \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u0432 google](https://drive.google.com/file/d/1hn2ke7M9SsxHsJbNrBE_qyJfuILUcj-g/)\r\n\r\n## FAQ\r\n\r\n\u0412: \u0414\u043b\u044f \u0447\u0435\u0433\u043e \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e?\r\n\r\n\u041e: \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 ETL \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u0445 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 CTE \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0438\u0442\u043e\u0433\u043e\u0432\u0443\u044e \u0432\u044b\u0431\u043e\u0440\u043a\u0443.\r\nClickhouse \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 CTE, \u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0437\u0430\u043f\u0440\u043e\u0441, \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 with \u0432\u043e \u0432\u0441\u0435\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430,\r\n\u0442\u0440\u0430\u0442\u044f \u0432\u043f\u0443\u0441\u0442\u0443\u044e \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u041e\u0417\u0423 \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.\r\n\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043e\u0439 CTE \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c Clickhouse \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.\r\n\u0414\u0430\u043d\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043e\u0439 clickhouse-client \u0438 clickhouse_driver. \u041e\u043d\u0430 \u043d\u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u0435\u0442 \u043d\u0430 \u0437\u0432\u0430\u043d\u0438\u0435 \u043b\u0443\u0447\u0448\u0435\u0439,\r\n\u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438.\r\n\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 - \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438, \u0440\u0435\u0448\u0430\u044e\u0449\u0435\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f Temporary Table \u0441\r\n\u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445.\r\n\r\n\u0412: \u041f\u043e\u0447\u0435\u043c\u0443 clickhttp.ClickHttpSession \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u0435\u0441\u043b\u0438 Clickhouse, \u043a\u0430\u043a \u0443\u0432\u0435\u0440\u044f\u044e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c?\r\n\r\n\u041e: \u0425\u043e\u0442\u044f \u0441\u0435\u0440\u0432\u0435\u0440 Clickhouse \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u0440\u0430\u0431\u043e\u0442\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439\r\n\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u043c\u0435\u0436\u0434\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 60 \u0441\u0435\u043a\u0443\u043d\u0434.\r\n\r\n\u0412: \u041f\u043e\u0447\u0435\u043c\u0443 \u0432 \u0444\u0430\u0439\u043b\u0435 requirements.txt \u0442\u043e\u043b\u044c\u043a\u043e backports.zoneinfo \u0438 requests? \u041a\u0443\u0434\u0430 \u0434\u0435\u043b\u0438\u0441\u044c numpy, pandas, polars, dask, vaex?\r\n\r\n\u041e: \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 0.0.5 \u0432\u0441\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u044b, \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0435\u0441\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a \u0440\u0430\u0431\u043e\u0442\u0435 \u0421\u0435\u0441\u0441\u0438\u044f->\u0417\u0430\u043f\u0440\u043e\u0441 | \u0421\u0435\u0441\u0441\u0438\u044f->\u041e\u0442\u0432\u0435\u0442, \u0431\u044b\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u044b\r\n\u0438\u0437 \u044f\u0432\u043d\u044b\u0445 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432 \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0440\u0430\u043d\u0435\u0435 \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0435 \u0432\u0441\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438\r\n\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432 \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u0432\u0441\u0435 \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b Dataframe. \u041a\u043e\u043c\u0443-\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e pandas, \u043a\u043e\u043c\u0443-\u0442\u043e numpy, \u0430 \u043a\u0442\u043e-\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f vaex.\r\n\u0422\u0435\u043f\u0435\u0440\u044c \u0438\u043c\u043f\u043e\u0440\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u0432 warning \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u0445, \u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442 \u0440\u0430\u0431\u043e\u0442\u0443.\r\n\u0412 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0435\u0442 \u0434\u0430\u0436\u0435 numpy, \u0432\u0441\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u044b\u0435 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 python,\r\n\u0438\u043d\u0430\u0447\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0431\u043e\u0440\u0430 \u0442\u0438\u043f\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0433\u043e DataFrame, \u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043a\u043b\u0430\u0441\u0441 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0441 \u0442\u0438\u043f\u043e\u043c pandas.DataFrame.\r\n\r\n\u0412: \u041a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0442\u0438\u043f\u044b \u0434\u0430\u0442\u0430\u0444\u0440\u0435\u0439\u043c \u0443 \u043c\u0435\u043d\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442?\r\n\r\n\u041e: \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 get_names \u0434\u043b\u044f clickhttp.FrameType. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0412\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432.\r\n\r\n\u0412: \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u043d\u043e \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 clickhttp.FrameType.get_names() \u0435\u0435 \u043d\u0435\u0442. \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c?\r\n\r\n\u041e:\r\n\r\n1. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e python \u0438\u043b\u0438 \u0432 \u0432\u0435\u0440\u043d\u043e\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435.\r\n2. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0431\u044b\u043b \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438.\r\n3. \u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u0432\u0443\u0445 \u0448\u0430\u0433\u043e\u0432 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 clickhttp.FrameType.get_names() \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f.\r\n\r\n## \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0439\r\n\r\n### 0.1.2\r\n\r\n* \u0412\u0441\u0435 \u0434\u043e\u043a\u0441\u0442\u0440\u0438\u043d\u0433\u0438 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u044b \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439\r\n* \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0438 examples \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430 \u0434\u0432\u0443\u0445 \u044f\u0437\u044b\u043a\u0430\u0445\r\n* \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f MIT\r\n* \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d setup.py\r\n\r\n### 0.1.1\r\n\r\n* \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0441\u0442\u0440\u0438\u043c\u0438\u043d\u0433 \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 Big Data\r\n* \u041f\u0440\u043e\u0432\u0435\u0434\u0435\u043d \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f flake8 warnings\r\n* \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u0432\u043e\u0440\u043d\u0438\u043d\u0433\u0438 \u0432 README.md\r\n* \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0441 \u0440\u0430\u043d\u043d\u0438\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 python\r\n* \u0412 \u0442\u0435\u0441\u0442\u044b \u0434\u043b\u044f workflow \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0432\u0435\u0440\u0441\u0438\u0438 python 3.7 - 3.13\r\n\r\n### 0.1.0\r\n\r\n* \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u043a NamedTuple\r\n* \u0412 \u0442\u0435\u0441\u0442\u044b \u0434\u043b\u044f workflow \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043b\u0430\u0441\u0441\u0430 ClickHttpSession\r\n* \u0414\u043b\u044f \u043f\u043e\u0440\u0442\u0430 443 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u043d\u0430 https\r\n* \u0424\u0443\u043d\u043a\u0446\u0438\u044f formatter \u0442\u0435\u043f\u0435\u0440\u044c \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043b\u0438\u0448\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u044b\r\n* \u0412 setup.py \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d url \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430 github\r\n\r\n### 0.0.9\r\n\r\n* \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 connections\r\n* \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u0434\u043b\u044f workflows\r\n* \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430 \u0432 CHANGELOG.md\r\n\r\n### 0.0.8\r\n\r\n* \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 SQL \u0437\u0430\u043f\u0440\u043e\u0441\u0430 (\u0441 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432)\r\n* \u0412 requirements.txt \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 sqlparse (\u0444\u043e\u0440\u043c\u0430\u0442\u0442\u0435\u0440 SQL)\r\n* \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 NamedTuple \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 connection\r\n* CHUNK_SIZE \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d \u0434\u043e 50 \u041c\u0411\r\n* \u0417\u0435\u0440\u043a\u0430\u043b\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u043e \u043d\u0430 github\r\n\r\n### 0.0.7\r\n\r\n* \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0444\u0430\u0439\u043b\u0430 requirements.txt\r\n\r\n### 0.0.6\r\n\r\n* \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430\r\n* FAQ.txt \u0438 CHANGELOG.md \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u044b \u0432 README.md\r\n* examples.ipynb \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d \u043d\u0430 google drive\r\n* \u041f\u0435\u0440\u0432\u0430\u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u0430 \u0432 pip\r\n\r\n### 0.0.5\r\n\r\n* \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d FAQ.txt\r\n* \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d CHANGELOG.md\r\n* \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d README.md\r\n* \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d examples.ipynb\r\n* \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 use_columns \u0434\u043b\u044f \u043c\u0435\u0442\u043e\u0434\u0430 insert_table\r\n* \u041c\u0435\u043b\u043a\u0438\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430\r\n\r\n### 0.0.4\r\n\r\n* \u0412\u0435\u0440\u0441\u0438\u044f \u0441 \u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438 dask \u0438 vaex \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u0430 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0442\u043a\u0443\r\n* \u0412 requirements.txt \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044f requests\r\n* \u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 DTYPE \u0438 FrameType \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432\r\n* \u041f\u0440\u043e\u0432\u0435\u0434\u0435\u043d \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432\r\n* \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043c\u0435\u0442\u043e\u0434 execute \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434, \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0445 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0444\u0440\u0435\u0439\u043c\u0430\r\n\r\n### 0.0.3\r\n\r\n* \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 dask.dataframe.DataFrame\r\n* \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 vaex.dataframe.DataFrameLocal\r\n* \u0412\u0435\u0440\u0441\u0438\u044f \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0442\u043e\u043b\u044c\u043a\u043e pandas.DataFrame \u0438 polars.DataFrame \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u0430 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0442\u043a\u0443\r\n\r\n### 0.0.2\r\n\r\n* \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u0432\u044b\u0432\u043e\u0434 \u0432 \u043b\u043e\u0433 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439\r\n* \u0417\u0430\u043c\u0435\u043d\u0430 logging.warning \u043d\u0430 logging.info \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432\r\n\r\n### 0.0.1\r\n\r\n\u041f\u0435\u0440\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Working with Clickhouse Database via HTTP Protocol | \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0411\u0414 Clickhouse \u043f\u043e HTTP-\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443",
    "version": "0.1.2",
    "project_urls": {
        "Homepage": "https://github.com/0xMihalich/clickhttp"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "593ef7b6ebdddafe8b27d0d1afba1547ed071ce383ac1a6946189f9684c72bfd",
                "md5": "16435320024c6eded46d3a68cd3050ac",
                "sha256": "6c4de731d255818d432f324aa2faa6bdadb5eb3280b2c14a8fd5b0a31d4a3be5"
            },
            "downloads": -1,
            "filename": "clickhttp-0.1.2.tar.gz",
            "has_sig": false,
            "md5_digest": "16435320024c6eded46d3a68cd3050ac",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 43323,
            "upload_time": "2024-10-22T14:17:10",
            "upload_time_iso_8601": "2024-10-22T14:17:10.134479Z",
            "url": "https://files.pythonhosted.org/packages/59/3e/f7b6ebdddafe8b27d0d1afba1547ed071ce383ac1a6946189f9684c72bfd/clickhttp-0.1.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-22 14:17:10",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "0xMihalich",
    "github_project": "clickhttp",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "clickhttp"
}
        
Elapsed time: 0.37247s