Установка chDB для Python
Требования
Python 3.8+ на macOS и Linux (x86_64 и ARM64)
Установка
Использование
Пример CLI:
Пример Python файла:
Запросы могут возвращать данные в любом поддерживаемом формате, а также в Dataframe
и Debug
.
Репозиторий GitHub
Вы можете найти репозиторий GitHub для проекта по адресу chdb-io/chdb.
Ввод данных
Доступны следующие методы для работы с форматами данных на диске и в памяти:
Запрос в файл (Parquet, CSV, JSON, Arrow, ORC и 60+)
Вы можете выполнять SQL и возвращать данные в нужном формате.
Работа с Parquet или CSV
Вывод в формате Pandas DataFrame
Запрос в таблице (Pandas DataFrame, файл/байты Parquet, байты Arrow)
Запрос в Pandas DataFrame
Запрос с поддержанием состояния сессии
Сессии будут сохранять состояние запроса. Все состояния DDL и DML будут храниться в директории. Путь к директории может быть передан в качестве аргумента. Если он не передан, будет создана временная директория.
Если путь не указан, временная директория будет удалена, когда объект Session будет удален. В противном случае путь будет сохранен.
Обратите внимание, что база данных по умолчанию - _local
, а движок по умолчанию - Memory
, что означает, что все данные будут храниться в памяти. Если вы хотите сохранить данные на диске, вам следует создать другую базу данных.
Смотрите также: test_stateful.py.
Запрос с использованием Python DB-API 2.0
Запрос с использованием UDF (Пользовательские функции)
Некоторые заметки о декораторе chDB Python UDF (Пользовательская функция).
- Функция должна быть без состояния. Поддерживаются только UDF, не UDAF (Пользовательские функции агрегации).
- Тип возврата по умолчанию - String. Если вы хотите изменить тип возврата, вы можете передать его в качестве аргумента. Тип возврата должен быть одним из следующих.
- Функция должна принимать аргументы типа String. Поскольку входные данные разделены табуляцией, все аргументы являются строками.
- Функция будет вызываться для каждой строки входных данных. Пример:
- Функция должна быть чистой функцией Python. Вы должны импортировать все модули Python, используемые внутри функции.
- Используемый интерпретатор Python такой же, как и тот, который используется для запуска скрипта. Вы можете получить его из
sys.executable
.
смотрите также: test_udf.py.
Движок таблиц Python
Запрос по Pandas DataFrame
Запрос по Arrow Table
Запрос по экземпляру класса chdb.PyReader
- Вы должны наследовать класс chdb.PyReader и реализовать метод
read
. - Метод
read
должен:- возвращать список списков, первая размерность - столбец, вторая размерность - строка, порядок столбцов должен совпадать с первым аргументом
col_names
методаread
. - возвращать пустой список, когда больше нет данных для чтения.
- иметь состояние, курсор должен обновляться в методе
read
.
- возвращать список списков, первая размерность - столбец, вторая размерность - строка, порядок столбцов должен совпадать с первым аргументом
- Метод
get_schema
может быть реализован для возврата схемы таблицы. Прототип:def get_schema(self) -> List[Tuple[str, str]]:
, возвращаемое значение - список кортежей, каждый кортеж содержит имя столбца и тип столбца. Тип столбца должен быть одним из следующих.
Смотрите также: test_query_py.py.
Ограничения
- Поддерживаемые типы столбцов:
pandas.Series
,pyarrow.array
,chdb.PyReader
- Поддерживаемые типы данных: Int, UInt, Float, String, Date, DateTime, Decimal
- Тип Python Object будет преобразован в String
- Производительность Pandas DataFrame является лучшей, Arrow Table лучше, чем PyReader
Для получения дополнительных примеров смотрите examples и tests.