Справочник по API Python
Основные функции запросов
chdb.query
Выполняет SQL-запрос с использованием движка chDB.
Это основная функция для выполнения запросов, которая выполняет SQL‑выражения с использованием встроенного движка ClickHouse. Поддерживает различные форматы вывода и может работать с базами данных в памяти или файловыми базами данных.
Синтаксис
Параметры
| Parameter | Type | Default | Description |
|---|---|---|---|
sql | str | required | Строка SQL‑запроса для выполнения |
output_format | str | "CSV" | Формат вывода результатов. Поддерживаемые форматы: • "CSV" — значения, разделённые запятыми• "JSON" — формат JSON• "Arrow" — формат Apache Arrow• "Parquet" — формат Parquet• "DataFrame" — Pandas DataFrame• "ArrowTable" — PyArrow Table• "Debug" — включает подробное журналирование |
path | str | "" | Путь к файлу базы данных. По умолчанию используется база данных в оперативной памяти. Может быть путём к файлу или ":memory:" для базы данных в памяти |
udf_path | str | "" | Путь к каталогу с пользовательскими функциями (User-Defined Functions) |
Возвращает
Возвращает результат запроса в указанном формате:
| Тип результата | Условие |
|---|---|
str | Для текстовых форматов, таких как CSV, JSON |
pd.DataFrame | Когда output_format равен "DataFrame" или "dataframe" |
pa.Table | Когда output_format равен "ArrowTable" или "arrowtable" |
| объект результата chdb | Для остальных форматов |
Исключения
| Исключение | Условие |
|---|---|
ChdbError | Если выполнение SQL‑запроса завершилось с ошибкой |
ImportError | Если отсутствуют необходимые зависимости для форматов DataFrame/Arrow |
Примеры
chdb.sql
Выполнение SQL‑запроса с использованием движка chDB.
Это основная функция для выполнения запросов, которая запускает SQL‑инструкции во встроенном движке ClickHouse. Поддерживает различные форматы вывода и может работать с базами данных в памяти или на файловой системе.
Синтаксис
Параметры
| Parameter | Type | Default | Description |
|---|---|---|---|
sql | str | required | Строка SQL‑запроса для выполнения |
output_format | str | "CSV" | Формат вывода результатов. Поддерживаемые форматы: • "CSV" — значения, разделённые запятыми• "JSON" — формат JSON• "Arrow" — формат Apache Arrow• "Parquet" — формат Parquet• "DataFrame" — Pandas DataFrame• "ArrowTable" — PyArrow Table• "Debug" — включает подробное журналирование |
path | str | "" | Путь к файлу базы данных. По умолчанию используется база данных в оперативной памяти. Может быть путём к файлу или ":memory:" для базы данных в памяти |
udf_path | str | "" | Путь к каталогу с пользовательскими функциями (User-Defined Functions) |
Возвращает
Возвращает результат запроса в указанном формате:
| Тип результата | Условие |
|---|---|
str | Для текстовых форматов, таких как CSV, JSON |
pd.DataFrame | Когда output_format равен "DataFrame" или "dataframe" |
pa.Table | Когда output_format равен "ArrowTable" или "arrowtable" |
| объект результата chdb | Для остальных форматов |
Исключения
| Исключение | Условие |
|---|---|
ChdbError | Если выполнение SQL‑запроса завершилось с ошибкой |
ImportError | Если отсутствуют необходимые зависимости для форматов DataFrame/Arrow |
Примеры
chdb.to_arrowTable
Преобразует результат запроса в PyArrow Table.
Преобразует результат запроса в chDB в PyArrow Table для эффективной колонночной обработки данных. Возвращает пустую таблицу, если результат пустой.
Синтаксис
Параметры
| Параметр | Описание |
|---|---|
res | объект результата запроса chDB, содержащий бинарные данные Arrow |
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
pa.Table | таблица PyArrow, содержащая результаты запроса |
Исключения
| Тип ошибки | Описание |
|---|---|
ImportError | Если pyarrow или pandas не установлены |
Пример
chdb.to_df
Преобразовать результат запроса в pandas DataFrame.
Преобразует результат запроса в chDB в pandas DataFrame, сначала преобразуя его в PyArrow Table, а затем — в pandas с использованием многопоточности для повышения производительности.
Синтаксис
Параметры
| Параметр | Описание |
|---|---|
r | объект результата выполнения запроса chDB, содержащий бинарные данные Arrow |
Возвращает
| Тип возврата | Описание |
|---|---|
pd.DataFrame | объект pandas DataFrame, содержащий результаты запроса |
Исключения
| Исключение | Условие |
|---|---|
ImportError | если библиотеки pyarrow или pandas не установлены |
Пример
Управление подключениями и сессиями
Доступны следующие функции работы с сессиями:
chdb.connect
Создаёт подключение к фоновому серверу chDB.
Эта функция устанавливает подключение к движку базы данных chDB (ClickHouse). В одном процессе допускается только одно открытое подключение. Многократные вызовы с одной и той же строкой подключения будут возвращать один и тот же объект подключения.
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
connection_string | str | ":memory:" | Строка подключения к базе данных. См. форматы ниже. |
Базовые форматы
| Формат | Описание |
|---|---|
":memory:" | База данных в памяти (по умолчанию) |
"test.db" | Файл базы данных по относительному пути |
"file:test.db" | То же, что относительный путь |
"/path/to/test.db" | Файл базы данных по абсолютному пути |
"file:/path/to/test.db" | То же, что абсолютный путь |
С параметрами запроса
| Формат | Описание |
|---|---|
"file:test.db?param1=value1¶m2=value2" | Относительный путь с параметрами |
"file::memory:?verbose&log-level=test" | База данных в памяти с параметрами |
"///path/to/test.db?param1=value1¶m2=value2" | Абсолютный путь с параметрами |
Обработка параметров запроса
Параметры запроса передаются в движок ClickHouse как аргументы запуска. Особая обработка параметров:
| Специальный параметр | Преобразуется в | Описание |
|---|---|---|
mode=ro | --readonly=1 | Режим только чтения |
verbose | (флаг) | Включает подробное логирование |
log-level=test | (настройка) | Устанавливает уровень логирования |
Для полного списка параметров см. clickhouse local --help --verbose
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
Connection | Объект подключения к базе данных, который поддерживает: • Создание курсоров с помощью Connection.cursor()• Выполнение запросов напрямую с помощью Connection.query()• Потоковые запросы с помощью Connection.send_query()• Протокол контекстного менеджера для автоматической очистки |
Исключения
| Исключение | Условие |
|---|---|
RuntimeError | Если не удалось подключиться к базе данным |
Поддерживается только одно подключение на процесс. Создание нового подключения закроет любое существующее подключение.
Примеры
См. также
Connection- класс подключения к базе данныхCursor- курсор базы данных для операций DB-API 2.0
Обработка исключений
class chdb.ChdbError
Bases: Exception
Базовый класс исключений для ошибок, связанных с chDB.
Это исключение возникает, когда выполнение запроса chDB завершается сбоем или приводит к ошибке. Оно наследуется от стандартного класса исключений Python Exception и предоставляет информацию об ошибке от базового движка ClickHouse.
class chdb.session.Session
Bases: object
Session хранит состояние запроса.
Если path равно None, будет создана временная директория и использована как путь к базе данных,
а временная директория будет удалена при закрытии сессии.
Вы также можете передать путь для создания базы данных по этому пути, где будут храниться ваши данные.
Вы также можете использовать строку подключения, чтобы передать путь и другие параметры.
Примеры
| Connection String | Описание |
|---|---|
":memory:" | База данных в памяти |
"test.db" | Относительный путь |
"file:test.db" | То же, что выше |
"/path/to/test.db" | Абсолютный путь |
"file:/path/to/test.db" | То же, что выше |
"file:test.db?param1=value1¶m2=value2" | Относительный путь с query-параметрами |
"file::memory:?verbose&log-level=test" | База данных в памяти с query-параметрами |
"///path/to/test.db?param1=value1¶m2=value2" | Абсолютный путь с query-параметрами |
Строки подключения, содержащие query-параметры, такие как “file:test.db?param1=value1¶m2=value2” «param1=value1» будут переданы в движок ClickHouse как аргументы запуска.
Для получения дополнительной информации см. clickhouse local –help –verbose.
Особый порядок обработки некоторых аргументов:
- «mode=ro» будет соответствовать «–readonly=1» для ClickHouse (режим только для чтения)
- Одновременно может быть только одна сессия. Если вы хотите создать новую сессию, необходимо закрыть существующую.
- Создание новой сессии приведёт к закрытию существующей.
cleanup
Очистка ресурсов сессии с обработкой исключений.
Этот метод пытается закрыть сессию, подавляя любые исключения, которые могут возникнуть в процессе очистки. Он особенно полезен в сценариях обработки ошибок или когда необходимо гарантировать выполнение очистки независимо от состояния сессии.
Синтаксис
Этот метод никогда не выбрасывает исключения, поэтому его безопасно вызывать в блоках finally или деструкторах.
Примеры
См. также
close()— для явного закрытия сессии с пробросом ошибок
close
Закрывает сессию и освобождает ресурсы.
Этот метод закрывает базовое подключение и сбрасывает глобальное состояние сессии. После вызова этого метода сессия становится недействительной и не может использоваться для последующих запросов.
Синтаксис
Этот метод автоматически вызывается, когда сессия используется как контекстный менеджер или когда объект сессии уничтожается.
Любая попытка использовать сессию после вызова close() приведёт к ошибке.
Примеры
query
Выполняет SQL-запрос и возвращает результаты.
Этот метод выполняет SQL-запрос к базе данных сессии и возвращает результаты в указанном формате. Метод поддерживает различные форматы вывода и сохраняет состояние сессии между запросами.
Синтаксис
Параметры
| Parameter | Type | Default | Description |
|---|---|---|---|
sql | str | required | Строка SQL‑запроса, который нужно выполнить |
fmt | str | "CSV" | Формат вывода результатов. Доступные форматы: • "CSV" — значения, разделённые запятыми• "JSON" — формат JSON• "TabSeparated" — значения, разделённые табуляцией• "Pretty" — формат таблицы с удобочитаемым выводом• "JSONCompact" — компактный формат JSON• "Arrow" — формат Apache Arrow• "Parquet" — формат Parquet |
udf_path | str | "" | Путь к пользовательским функциям (UDF). Если не указан, используется путь к UDF, заданный при инициализации сессии |
Возвращает
Возвращает результаты запроса в указанном формате. Точный тип возвращаемого значения зависит от параметра формата:
- Строковые форматы (CSV, JSON и т. д.) возвращают
str - Бинарные форматы (Arrow, Parquet) возвращают
bytes
Исключения
| Exception | Condition |
|---|---|
RuntimeError | Если сессия закрыта или недействительна |
ValueError | Если SQL‑запрос содержит синтаксические ошибки |
Формат «Debug» не поддерживается и будет автоматически преобразован в «CSV» с выдачей предупреждения. Для отладки вместо этого используйте параметры строки подключения.
Этот метод выполняет запрос синхронно и загружает все результаты в
память. Для больших объёмов данных рассмотрите использование send_query() для
потоковой передачи результатов.
Примеры
См. также
send_query()- Для потокового выполнения запросовsql- Псевдоним этого метода
send_query
Выполняет SQL-запрос и возвращает потоковый итератор результатов.
Этот метод выполняет SQL-запрос к базе данных сессии и возвращает потоковый объект результата, который позволяет итерироваться по результатам, не загружая все данные в память одновременно. Это особенно полезно для больших наборов данных.
Синтаксис
Параметры
| Параметр | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
sql | str | required | Строка SQL-запроса для выполнения |
fmt | str | "CSV" | Формат вывода результатов. Доступные форматы: • "CSV" — значения, разделённые запятыми• "JSON" — формат JSON• "TabSeparated" — значения, разделённые табуляцией• "JSONCompact" — компактный формат JSON• "Arrow" — формат Apache Arrow• "Parquet" — формат Parquet |
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
StreamingResult | Итератор потокового результата, который постепенно возвращает результаты запроса. Итератор может использоваться в циклах for или быть преобразован в другие структуры данных |
Исключения
| Exception | Condition |
|---|---|
RuntimeError | Если сессия закрыта или недействительна |
ValueError | Если SQL‑запрос содержит синтаксические ошибки |
Формат «Debug» не поддерживается и будет автоматически преобразован в «CSV» с выдачей предупреждения. Для отладки вместо этого используйте параметры строки подключения.
Возвращаемый объект StreamingResult должен быть своевременно обработан или корректно сохранён, так как он поддерживает соединение с базой данных.
Примеры
См. также
query()- Для выполнения запросов без потоковой обработкиchdb.state.sqlitelike.StreamingResult- Потоковый итератор результатов
sql
Выполнить SQL‑запрос и вернуть результаты.
Этот метод выполняет SQL‑запрос к базе данных сеанса и возвращает результаты в указанном формате. Метод поддерживает различные форматы вывода и сохраняет состояние сеанса между запросами.
Синтаксис
Параметры
| Параметр | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
sql | str | обязателен | Строка SQL‑запроса для выполнения |
fmt | str | "CSV" | Формат вывода результатов. Доступные форматы: • "CSV" — значения, разделённые запятыми• "JSON" — формат JSON• "TabSeparated" — значения, разделённые табуляцией• "Pretty" — формат таблицы с удобочитаемым выводом• "JSONCompact" — компактный формат JSON• "Arrow" — формат Apache Arrow• "Parquet" — формат Parquet |
udf_path | str | "" | Путь к пользовательским функциям (UDF). Если не указан, используется путь к UDF из инициализации сессии |
Возвращает
Возвращает результаты запроса в указанном формате.
Точный тип возвращаемого значения зависит от параметра fmt:
- Строковые форматы (CSV, JSON и т.п.) возвращают
str - Бинарные форматы (Arrow, Parquet) возвращают
bytes
Исключения:
| Исключение | Условие |
|---|---|
RuntimeError | Если сессия закрыта или недействительна |
ValueError | Если SQL‑запрос составлен некорректно |
Формат "Debug" не поддерживается и будет автоматически преобразован
в "CSV" с предупреждением. Для отладки вместо этого используйте параметры строки подключения.
Этот метод выполняет запрос синхронно и загружает все результаты в
память.
Для больших наборов данных рассмотрите использование send_query() для потоковой загрузки результатов.
Примеры
См. также
send_query()— для потокового выполнения запросовsql— синоним этого метода
Управление состоянием
chdb.state.connect
Создаёт соединение с фоновым сервером chDB.
Эта функция устанавливает соединение с движком базы данных chDB (ClickHouse). Одновременно в процессе может быть только одно открытое соединение. Повторные вызовы с одной и той же строкой подключения будут возвращать тот же объект соединения.
Синтаксис
Параметры
| Параметр | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
connection_string(str, optional) | str | ":memory:" | Строка подключения к базе данных. См. форматы ниже. |
Базовые форматы
Поддерживаемые форматы строки подключения:
| Формат | Описание |
|---|---|
":memory:" | База данных в памяти (по умолчанию) |
"test.db" | Файл базы данных по относительному пути |
"file:test.db" | Эквивалент относительного пути |
"/path/to/test.db" | Файл базы данных по абсолютному пути |
"file:/path/to/test.db" | Эквивалент абсолютного пути |
С параметрами запроса
| Формат | Описание |
|---|---|
"file:test.db?param1=value1¶m2=value2" | Относительный путь с параметрами |
"file::memory:?verbose&log-level=test" | База данных в памяти с параметрами |
"///path/to/test.db?param1=value1¶m2=value2" | Абсолютный путь с параметрами |
Обработка параметров запроса
Параметры запроса передаются в движок ClickHouse как аргументы запуска. Особая обработка параметров:
| Специальный параметр | Преобразуется в | Описание |
|---|---|---|
mode=ro | --readonly=1 | Режим только чтения |
verbose | (флаг) | Включает подробное логирование |
log-level=test | (настройка) | Задает уровень логирования |
Полный список параметров см. в clickhouse local --help --verbose
Возвращает
| Тип возврата | Описание |
|---|---|
Connection | Объект подключения к базе данных, который поддерживает: • создание курсоров с помощью Connection.cursor()• прямые запросы с помощью Connection.query()• потоковые запросы с помощью Connection.send_query()• протокол контекстного менеджера для автоматической очистки |
Исключения
| Исключение | Условие |
|---|---|
RuntimeError | Если не удалось подключиться к базе данных |
Поддерживается только одно подключение на процесс. Создание нового подключения закроет существующее подключение.
Примеры
См. также
Connection— класс подключения к базе данныхCursor— курсор базы данных для операций DB-API 2.0
class chdb.state.sqlitelike.Connection
Базовый класс: object
Синтаксис
close
Закрывает соединение и освобождает ресурсы.
Этот метод закрывает соединение с базой данных и освобождает все связанные ресурсы, включая активные курсоры. После вызова этого метода соединение становится недействительным и не может использоваться для дальнейших операций.
Синтаксис
Этот метод идемпотентен — его можно безопасно вызывать несколько раз.
Все активные потоковые запросы будут отменены при закрытии соединения. Убедитесь, что все важные данные были обработаны перед закрытием.
Примеры
cursor
Создаёт объект Cursor для выполнения запросов.
Этот метод создаёт курсор базы данных, который предоставляет стандартный интерфейс DB-API 2.0 для выполнения запросов и выборки результатов. Курсор позволяет тонко управлять выполнением запросов и получением результатов.
Синтаксис
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
Cursor | Объект курсора для операций с базой данных |
Создание нового курсора приведёт к замене любого существующего курсора, связанного с этим соединением. Поддерживается только один курсор на соединение.
Примеры
См. также
Cursor— реализация курсора базы данных
query
Выполняет SQL-запрос и возвращает полный результат.
Этот метод синхронно выполняет SQL-запрос и возвращает полный набор результатов. Он поддерживает различные форматы вывода и автоматически применяет постобработку, специфичную для формата.
Синтаксис
Параметры:
| Параметр | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
query | str | обязательно | Строка SQL-запроса для выполнения |
format | str | "CSV" | Формат вывода результатов. Поддерживаемые форматы: • "CSV" — значения, разделённые запятыми (строка)• "JSON" — формат JSON (строка)• "Arrow" — формат Apache Arrow (bytes)• "Dataframe" — Pandas DataFrame (требуется pandas)• "Arrowtable" — PyArrow Table (требуется pyarrow) |
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
str | Для строковых форматов (CSV, JSON) |
bytes | Для формата Arrow |
pandas.DataFrame | Для формата dataframe |
pyarrow.Table | Для формата arrowtable |
Выбрасываемые исключения
| Исключение | Условие |
|---|---|
RuntimeError | Если выполнение запроса завершилось с ошибкой |
ImportError | Если необходимые пакеты для выбранного формата не установлены |
Этот метод загружает весь результирующий набор данных в память. Для больших объёмов данных рассмотрите использование send_query() для потоковой обработки.
Примеры
См. также
send_query()- Для потокового выполнения запросов
send_query
Выполняет SQL-запрос и возвращает потоковый итератор результатов.
Этот метод выполняет SQL-запрос и возвращает объект StreamingResult, который позволяет итерироваться по результатам, не загружая всё в память сразу. Это оптимально для обработки больших наборов результатов запроса.
Синтаксис
Параметры
| Parameter | Type | Default | Description |
|---|---|---|---|
query | str | required | Строка SQL-запроса, который необходимо выполнить |
format | str | "CSV" | Формат вывода результатов. Поддерживаемые форматы: • "CSV" — значения, разделённые запятыми• "JSON" — формат JSON• "Arrow" — формат Apache Arrow (включает метод record_batch())• "dataframe" — чанки Pandas DataFrame• "arrowtable" — чанки PyArrow Table |
Возвращает
| Return Type | Description |
|---|---|
StreamingResult | Потоковый итератор результатов запроса, который поддерживает: • протокол итератора (циклы for) • протокол контекстного менеджера (операторы with) • ручное получение с помощью метода fetch() • потоковую передачу PyArrow RecordBatch (только для формата Arrow) |
Исключения
| Exception | Condition |
|---|---|
RuntimeError | Если выполнение запроса завершается с ошибкой |
ImportError | Если необходимые пакеты для выбранного формата не установлены |
Только формат "Arrow" поддерживает метод record_batch() для возвращаемого StreamingResult.
Примеры
См. также
query()— Для выполнения запросов без потоковой передачиStreamingResult— Итератор потокового результата
class chdb.state.sqlitelike.StreamingResult
Базовый класс: object
Итератор потоковой обработки для работы с большими результатами запроса.
Этот класс предоставляет интерфейс итератора для потоковой обработки результатов запроса без загрузки всего результирующего набора в память. Он поддерживает различные форматы вывода и предоставляет методы для ручного получения результатов и потоковой передачи пакетов PyArrow RecordBatch.
fetch
Извлекает следующий фрагмент потоковых результатов.
Этот метод получает следующий доступный фрагмент данных из результата потокового запроса. Формат возвращаемых данных зависит от формата, указанного при запуске потокового запроса.
Синтаксис
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
str | Для текстовых форматов (CSV, JSON) |
bytes | Для бинарных форматов (Arrow, Parquet) |
None | Когда поток результатов исчерпан |
Примеры
cancel
Отменяет потоковый запрос и освобождает ресурсы.
Этот метод отменяет активный потоковый запрос и освобождает связанные с ним ресурсы. Его следует вызывать, когда вы хотите прекратить обработку результатов до полного завершения потока.
Синтаксис
Примеры
close
Закрывает потоковый результат и освобождает ресурсы.
Псевдоним для cancel(). Закрывает итератор потокового результата
и освобождает все связанные с ним ресурсы.
Синтаксис
record_batch
Создает PyArrow RecordBatchReader для эффективной пакетной обработки.
Этот метод создает PyArrow RecordBatchReader, который обеспечивает эффективный обход результатов запроса в формате Arrow. Это наиболее эффективный способ обработки больших наборов результатов при использовании PyArrow.
Синтаксис
Параметры
| Параметр | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
rows_per_batch | int | 1000000 | Количество строк в пакете |
Возвращаемое значение
| Тип возвращаемого значения | Описание |
|---|---|
pa.RecordBatchReader | PyArrow RecordBatchReader для итерации по пакетам |
Этот метод доступен только в том случае, если потоковый запрос был запущен
с format="Arrow". Использование его с другими форматами приведёт к ошибке.
Примеры
Протокол итератора
StreamingResult поддерживает протокол итератора Python, что позволяет
его использовать напрямую в циклах for:
Протокол менеджера контекста
StreamingResult поддерживает протокол менеджера контекста для автоматического освобождения ресурсов:
class chdb.state.sqlitelike.Cursor
Базовый класс: object
close
Закрывает курсор и освобождает ресурсы.
Этот метод закрывает курсор и очищает все связанные с ним ресурсы. После вызова этого метода курсор становится недействительным и не может использоваться для дальнейших операций.
Синтаксис
Этот метод идемпотентен — его можно безопасно вызывать многократно. Курсор также автоматически закрывается при закрытии соединения.
Примеры
column_names
Возвращает список имён столбцов последнего выполненного запроса.
Этот метод возвращает имена столбцов из последнего выполненного запроса SELECT. Имена возвращаются в том же порядке, в каком они идут в результирующем наборе.
Синтаксис
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
list | Список строк с именами столбцов или пустой список, если запрос не был выполнен или не вернул ни одного столбца |
Примеры
См. также
column_types()- Получить информацию о типах столбцовdescription- Описание столбцов по стандарту DB-API 2.0
column_types
Возвращает список типов столбцов из последнего выполненного запроса.
Этот метод возвращает имена типов столбцов ClickHouse из последнего выполненного запроса SELECT. Типы возвращаются в том же порядке, в котором они появляются в результирующем наборе.
Синтаксис
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
list | Список строк с названиями типов ClickHouse или пустой список, если запрос ещё не был выполнен либо не вернул столбцов |
Примеры
См. также
column_names()— Получение информации об именах столбцовdescription— Описание столбцов по стандарту DB-API 2.0
commit
Фиксирует все незавершённые транзакции.
Этот метод фиксирует любую незавершённую транзакцию базы данных. В ClickHouse большинство операций фиксируются автоматически, но этот метод предусмотрен для совместимости с DB-API 2.0.
ClickHouse, как правило, автоматически фиксирует операции, поэтому
явный commit обычно не требуется. Этот метод предусмотрен для
совместимости со стандартным рабочим процессом DB-API 2.0.
Синтаксис
Примеры
property description : list
Возвращает описание столбцов в соответствии со спецификацией DB-API 2.0.
Это свойство возвращает список 7-элементных кортежей, описывающих каждый столбец в результирующем наборе последнего выполненного запроса SELECT. Каждый кортеж содержит: (name, type_code, display_size, internal_size, precision, scale, null_ok)
В настоящее время предоставляются только name и type_code, остальные поля установлены в None.
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
list | Список 7-элементных кортежей, описывающих каждый столбец, или пустой список, если запрос SELECT не был выполнен |
Это соответствует спецификации DB-API 2.0 для cursor.description. Только первые два элемента (name и type_code) содержат значимые данные в этой реализации.
Примеры
См. также
column_names()— Получить только имена столбцовcolumn_types()— Получить только типы столбцов
execute
Выполнить SQL-запрос и подготовить результаты к выборке.
Этот метод выполняет SQL-запрос и подготавливает результаты для последующего получения с использованием методов выборки. Он обрабатывает разбор полученных данных и автоматическое преобразование типов для типов данных ClickHouse.
Синтаксис
Параметры:
| Параметр | Тип | Описание |
|---|---|---|
query | str | SQL‑запрос для выполнения |
Исключения
| Исключение | Условие |
|---|---|
Exception | Если выполнение запроса или разбор результата завершается ошибкой |
Этот метод соответствует спецификации DB-API 2.0 для cursor.execute().
После выполнения используйте fetchone(), fetchmany() или fetchall()
для получения результатов.
Метод автоматически преобразует типы данных ClickHouse в соответствующие типы Python:
- типы Int/UInt → int
- типы Float → float
- String/FixedString → str
- DateTime → datetime.datetime
- Date → datetime.date
- Bool → bool
Примеры
См. также
fetchone()- Извлекает одну строкуfetchmany()- Извлекает несколько строкfetchall()- Извлекает все оставшиеся строки
fetchall
Извлекает все оставшиеся строки из результата запроса.
Этот метод извлекает все оставшиеся строки из текущего результата запроса, начиная с текущей позиции курсора. Он возвращает кортеж кортежей, представляющих строки, с применённым соответствующим преобразованием типов Python.
Синтаксис
Возвращает:
| Тип возвращаемого значения | Описание |
|---|---|
tuple | Кортеж, содержащий все оставшиеся кортежи строк из набора результатов. Возвращает пустой кортеж, если строк больше нет |
Этот метод загружает все оставшиеся строки в память за один раз. Для больших
наборов результатов используйте fetchmany() для поэтапной обработки результатов.
Примеры
См. также
fetchone()- Извлечение одной строкиfetchmany()- Извлечение нескольких строк пакетами
fetchmany
Извлекает несколько строк из результата запроса.
Этот метод извлекает до size строк из текущего набора результатов
запроса. Он возвращает кортеж кортежей, где каждая строка представлена
кортежем, содержащим значения столбцов с соответствующим преобразованием
типов в Python.
Синтаксис
Параметры
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
size | int | 1 | Максимальное количество строк для извлечения |
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
tuple | Кортеж, содержащий до 'size' кортежей строк. Может содержать меньше строк, если результирующий набор исчерпан |
Этот метод соответствует спецификации DB-API 2.0. Он вернёт меньше, чем ‘size’ строк, если результирующий набор исчерпан.
Примеры
См. также
fetchone()- Получает одну строкуfetchall()- Получает все оставшиеся строки
fetchone
Извлекает следующую строку из результата запроса.
Этот метод получает следующую доступную строку из текущего результата запроса. Он возвращает кортеж со значениями столбцов с выполненным соответствующим преобразованием типов Python.
Синтаксис
Возвращает:
| Тип возвращаемого значения | Описание |
|---|---|
Optional[tuple] | Следующая строка в виде кортежа значений столбцов или None, если больше нет доступных строк |
Этот метод следует спецификации DB-API 2.0. Значения столбцов автоматически конвертируются в соответствующие типы Python на основе типов столбцов ClickHouse.
Примеры
См. также
fetchmany()- Извлечь несколько строкfetchall()- Извлечь все оставшиеся строки
chdb.state.sqlitelike
Преобразует результат запроса в таблицу PyArrow.
Эта функция преобразует результаты запроса chdb в формат таблицы PyArrow, который обеспечивает эффективный столбцовый доступ к данным и совместимость с другими библиотеками обработки данных.
Синтаксис
Параметры:
| Parameter | Type | Description |
|---|---|---|
res | - | Объект результата запроса из chdb, содержащий данные в формате Arrow |
Возвращает
| Return Type | Description |
|---|---|
pyarrow.Table | Таблица PyArrow, содержащая результаты запроса |
Исключения
| Exception | Condition |
|---|---|
ImportError | Если пакеты pyarrow или pandas не установлены |
Для работы этой функции необходима установка и pyarrow, и pandas.
Установите их с помощью: pip install pyarrow pandas
При отсутствии результатов возвращается пустая таблица PyArrow без схемы.
Примеры
chdb.state.sqlitelike.to_df
Преобразует результат запроса в Pandas DataFrame.
Эта функция преобразует результат запроса chdb в формат Pandas DataFrame, сначала конвертируя его в таблицу PyArrow, а затем в DataFrame. Это обеспечивает удобный анализ данных с использованием Pandas API.
Синтаксис
Параметры:
| Параметр | Тип | Описание |
|---|---|---|
r | - | Объект результата запроса из chdb, содержащий данные в формате Arrow |
Возвращает:
| Тип возвращаемого значения | Описание |
|---|---|
pandas.DataFrame | Объект DataFrame, содержащий результаты запроса с корректными именами столбцов и типами данных |
Исключения
| Исключение | Условие |
|---|---|
ImportError | Если пакеты pyarrow или pandas не установлены |
Эта функция использует многопоточность для преобразования данных из Arrow в Pandas, чтобы повысить производительность при работе с большими наборами данных.
См. также
to_arrowTable()— для преобразования в формат таблицы PyArrow
Примеры
Интеграция с DataFrame
class chdb.dataframe.Table
Родительские классы:
Интерфейс Database API (DBAPI) 2.0
chDB предоставляет интерфейс, совместимый с Python DB-API 2.0, для подключения к базе данных, что позволяет использовать chDB с инструментами и фреймворками, которые ожидают стандартные интерфейсы работы с базами данных.
Интерфейс chDB DB-API 2.0 включает:
- Connections: управление подключениями к базе данных с помощью строк подключения
- Cursors: выполнение запросов и получение результатов
- Type System: константы типов и конвертеры, совместимые с DB-API 2.0
- Error Handling: стандартная иерархия исключений базы данных
- Thread Safety: уровень потокобезопасности 1 (потоки могут совместно использовать модули, но не подключения)
Основные функции
Интерфейс Database API (DBAPI) 2.0 реализует следующие основные функции:
chdb.dbapi.connect
Создать новое подключение к базе данных.
Синтаксис
Параметры
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
path | str | None | Путь к файлу базы данных. None для базы данных в оперативной памяти |
Исключения
| Исключение | Условие |
|---|---|
err.Error | Если соединение не может быть установлено |
chdb.dbapi.get_client_info()
Получить информацию о версии клиента.
Возвращает версию клиента chDB в виде строки для совместимости с MySQLdb.
Синтаксис
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
str | Строка версии в формате 'major.minor.patch' |
Конструкторы типов
chdb.dbapi.Binary(x)
Возвращает значение x как двоичный тип.
Эта функция преобразует входное значение в тип bytes для использования с двоичными полями базы данных в соответствии со спецификацией DB-API 2.0.
Синтаксис
Параметры
| Параметр | Тип | Описание |
|---|---|---|
x | - | Входные данные для преобразования в байтовый формат |
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
bytes | Входные данные, преобразованные в байты |
Класс Connection
class chdb.dbapi.connections.Connection(path=None)
Bases: object
Соединение с базой данных chDB, совместимое с DB-API 2.0.
Этот класс предоставляет стандартный интерфейс DB-API для подключения к базам данных chDB и взаимодействия с ними. Поддерживаются как базы данных в памяти, так и файловые базы данных.
Соединение управляет базовым движком chDB и предоставляет методы для выполнения запросов, управления транзакциями (операции с транзакциями не выполняются — no-op для ClickHouse) и создания курсоров.
Параметры
| Parameter | Type | Default | Description |
|---|---|---|---|
path | str | None | Путь к файлу базы данных. Если указано None, используется база данных в памяти. Может быть путем к файлу, например 'database.db', или None для ':memory:' |
Переменные
| Variable | Type | Description |
|---|---|---|
encoding | str | Кодировка символов для запросов, по умолчанию 'utf8' |
open | bool | True, если соединение открыто, False, если закрыто |
Примеры
ClickHouse не поддерживает традиционные транзакции, поэтому операции commit() и rollback() фактически ничего не делают, но предусмотрены для совместимости со спецификацией DB-API.
close
Закрывает соединение с базой данных.
Закрывает внутреннее соединение с chDB и помечает это соединение как закрытое.
Последующие операции над этим соединением приведут к возбуждению исключения Error.
Синтаксис
Исключения
| Исключение | Условие |
|---|---|
err.Error | Если соединение уже закрыто |
commit
Подтверждает текущую транзакцию.
Синтаксис
Это операция-заглушка для chDB/ClickHouse, так как эти системы не поддерживают традиционные транзакции. Предоставляется для совместимости с DB-API 2.0.
cursor
Создаёт новый курсор для выполнения запросов.
Синтаксис
Параметры
| Параметр | Тип | Описание |
|---|---|---|
cursor | - | Игнорируется, указан для совместимости |
Возвращаемое значение
| Тип возвращаемого значения | Описание |
|---|---|
Cursor | Новый объект курсора для этого соединения |
Исключения
| Исключение | Условие |
|---|---|
err.Error | Если соединение закрыто |
Пример
escape
Экранировать значение для безопасного включения в SQL-запросы.
Синтаксис
Параметры
| Параметр | Тип | Описание |
|---|---|---|
obj | - | Значение для экранирования (строка, байты, число и т.д.) |
mapping | - | Необязательное сопоставление символов для экранирования |
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
| - | Экранированная версия входного значения, подходящая для SQL-запросов |
Пример
escape_string
Экранирует строковое значение для SQL-запросов.
Синтаксис
Параметры
| Параметр | Тип | Описание |
|---|---|---|
s | str | Строка для экранирования |
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
str | Экранированная строка, безопасная для включения в SQL-запрос |
property open
Проверяет, открыто ли соединение.
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
bool | True, если соединение открыто, False, если закрыто |
query
Выполнить SQL-запрос напрямую и вернуть сырые результаты.
Этот метод обходит интерфейс курсора и выполняет запросы напрямую.
Для стандартного использования DB-API предпочтительно использовать метод cursor().
Синтаксис
Параметры:
| Параметр | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
sql | str или bytes | обязательно | SQL-запрос для выполнения |
fmt | str | "CSV" | Формат вывода. Поддерживаемые форматы включают «CSV», «JSON», «Arrow», «Parquet» и др. |
Возвращает
| Тип результата | Описание |
|---|---|
| - | Результат запроса в указанном формате |
Исключения
| Исключение | Условие |
|---|---|
err.InterfaceError | Если соединение закрыто или выполнение запроса завершилось ошибкой |
Пример
property resp
Возвращает ответ последнего запроса.
Returns
| Return Type | Description |
|---|---|
| - | Необработанный ответ от последнего вызова query() |
Это свойство обновляется каждый раз при прямом вызове query(). Оно не отражает запросы, выполняемые через курсоры.
rollback
Откатывает текущую транзакцию.
Синтаксис
Эта операция не выполняет никаких действий (no-op) для chDB/ClickHouse, так как он не поддерживает традиционные транзакции. Предоставляется для соответствия спецификации DB-API 2.0.
Класс Cursor
class chdb.dbapi.cursors.Cursor
Базовый класс: object
Курсор DB-API 2.0 для выполнения запросов и получения результатов.
Курсор предоставляет методы для выполнения SQL-операторов, управления результатами запросов и навигации по наборам результатов. Поддерживает привязку параметров, пакетные операции и следует спецификации DB-API 2.0.
Не создавайте экземпляры Cursor напрямую. Вместо этого используйте Connection.cursor().
| Переменная | Тип | Описание |
|---|---|---|
description | tuple | Метаданные столбцов результата последнего запроса |
rowcount | int | Количество строк, затронутых последним запросом (-1, если неизвестно) |
arraysize | int | Количество строк, по умолчанию извлекаемых за один раз (по умолчанию: 1) |
lastrowid | - | Идентификатор последней вставленной строки (если применимо) |
max_stmt_length | int | Максимальный размер SQL-оператора для executemany() (по умолчанию: 1024000) |
Примеры
См. DB-API 2.0 Cursor Objects для полного описания спецификации.
callproc
Выполнить хранимую процедуру (заглушечная реализация).
Синтаксис
Параметры
| Параметр | Тип | Описание |
|---|---|---|
procname | str | Имя хранимой процедуры, которую нужно выполнить |
args | sequence | Параметры, передаваемые в процедуру |
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
sequence | Исходный параметр args (без изменений) |
chDB/ClickHouse не поддерживает хранимые процедуры в традиционном смысле. Этот метод предоставлен для соответствия спецификации DB-API 2.0, но не выполняет никаких реальных операций. Используйте execute() для всех SQL-операций.
Это реализация-заглушка. Традиционные возможности работы с хранимыми процедурами, такие как параметры OUT/INOUT, несколько наборов результатов и серверные переменные, не поддерживаются базовым движком ClickHouse.
close
Закрывает курсор и освобождает связанные с ним ресурсы.
После закрытия курсор становится непригодным для использования, и любая операция вызовет исключение. Закрытие курсора исчерпывает все оставшиеся данные и освобождает базовый курсор.
Синтаксис
execute
Выполнение SQL-запроса с необязательной привязкой параметров.
Этот метод выполняет один SQL‑запрос с необязательной подстановкой параметров. Для гибкости поддерживается несколько стилей плейсхолдеров параметров.
Синтаксис
Параметры
| Параметр | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
query | str | обязательный | SQL‑запрос для выполнения |
args | tuple/list/dict | None | Параметры для подстановки в плейсхолдеры |
Возвращаемое значение
| Тип возврата | Описание |
|---|---|
int | Количество затронутых строк (-1, если неизвестно) |
Форматы параметров
| Стиль | Пример |
|---|---|
| Стиль с вопросительным знаком | "SELECT * FROM users WHERE id = ?" |
| Именованный стиль | "SELECT * FROM users WHERE name = %(name)s" |
| Стиль форматирования | "SELECT * FROM users WHERE age = %s" (устаревший) |
Примеры
Исключения
| Исключение | Условие |
|---|---|
ProgrammingError | Если курсор закрыт или запрос некорректен |
InterfaceError | Если во время выполнения произошла ошибка базы данных |
executemany(query, args)
Выполняет запрос несколько раз с различными наборами параметров.
Этот метод эффективно выполняет один и тот же SQL‑запрос несколько раз с различными значениями параметров. Особенно полезен для пакетных операций вставки (INSERT).
Синтаксис
Параметры
| Параметр | Тип | Описание |
|---|---|---|
query | str | SQL‑запрос, который нужно выполнить несколько раз |
args | sequence | Последовательность кортежей/словарей/списков параметров для каждого выполнения запроса |
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
int | Общее количество затронутых строк во всех выполнениях запроса |
Примеры
Этот метод повышает производительность операций INSERT и UPDATE с несколькими строками за счёт оптимизации процесса выполнения запроса.
fetchall()
Извлекает все оставшиеся строки из результата запроса.
Синтаксис
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
list | Список кортежей, представляющих все оставшиеся строки |
Исключения
| Исключение | Условие |
|---|---|
ProgrammingError | Если сначала не был вызван execute() |
Этот метод может потреблять большой объём памяти для больших наборов результатов.
Рассмотрите использование fetchmany() для больших наборов данных.
Пример
fetchmany
Извлекает несколько строк из результата запроса.
Синтаксис
Параметры
| Параметр | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
size | int | 1 | Количество строк для выборки. Если не указано, используется cursor.arraysize. |
Возвращает
| Тип возврата | Описание |
|---|---|
list | Список кортежей, представляющих полученные строки |
Исключения
| Исключение | Условие |
|---|---|
ProgrammingError | Если execute() не был вызван ранее |
Пример
fetchone
Извлекает следующую строку из результата запроса.
Синтаксис
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
tuple or None | Следующая строка в виде кортежа или None, если больше строк нет |
Исключения
| Исключение | Условие |
|---|---|
ProgrammingError | Если execute() не был вызван сначала |
Пример
max_stmt_length = 1024000
Максимальный размер оператора, который генерирует executemany().
Значение по умолчанию — 1024000.
mogrify
Возвращает точную строку запроса, которая будет отправлена в базу данных.
Этот метод показывает окончательный SQL‑запрос после подстановки параметров, что полезно для отладки и логирования.
Синтаксис
Параметры
| Параметр | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
query | str | обязательно | SQL-запрос с плейсхолдерами для параметров |
args | tuple/list/dict | None | Параметры для подстановки |
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
str | Итоговая строка SQL-запроса с подставленными параметрами |
Пример
Этот метод соответствует расширению DB-API 2.0, используемому в Psycopg.
nextset
Переход к следующему набору результатов (не поддерживается).
Синтаксис
Возвращаемые значения
| Тип возвращаемого значения | Описание |
|---|---|
None | Всегда возвращает значение None, так как несколько наборов результатов не поддерживаются |
chDB/ClickHouse не поддерживает несколько наборов результатов для одного запроса. Этот метод реализован для совместимости с DB-API 2.0, но всегда возвращает None.
setinputsizes
Задает размеры входных параметров (реализация-заглушка, не выполняющая никаких действий).
Синтаксис
Параметры
| Параметр | Тип | Описание |
|---|---|---|
*args | - | Спецификации размеров параметров (игнор.) |
Этот метод ничего не делает, но требуется спецификацией DB-API 2.0. chDB автоматически обрабатывает размеры параметров.
setoutputsizes
Задаёт размеры выходных столбцов (реализация-заглушка).
Синтаксис
Параметры
| Параметр | Тип | Описание |
|---|---|---|
*args | - | Параметры размера столбца (игнорируются) |
Этот метод ничего не делает, но необходим в соответствии со спецификацией DB-API 2.0. chDB автоматически обрабатывает размеры вывода внутри себя.
Классы ошибок
Классы исключений для операций с базой данных chdb.
Этот модуль предоставляет полную иерархию классов исключений для обработки ошибок, связанных с базой данных в chdb, в соответствии со спецификацией Python Database API v2.0.
Иерархия исключений имеет следующую структуру:
Каждый класс исключения представляет собой определённую категорию ошибок базы данных:
| Exception | Description |
|---|---|
Warning | Нефатальные предупреждения во время операций с базой данных |
InterfaceError | Проблемы с самим интерфейсом базы данных |
DatabaseError | Базовый класс для всех ошибок, связанных с базой данных |
DataError | Проблемы с обработкой данных (некорректные значения, ошибки типов) |
OperationalError | Операционные проблемы базы данных (подключение, ресурсы) |
IntegrityError | Нарушения ограничений (внешние ключи, уникальность) |
InternalError | Внутренние ошибки базы данных и повреждение внутренних структур |
ProgrammingError | Ошибки синтаксиса SQL и неправильное использование API |
NotSupportedError | Неподдерживаемые функции или операции |
Эти классы исключений соответствуют спецификации Python DB API 2.0 и обеспечивают единообразную обработку ошибок для различных операций с базой данных.
См. также
- Python Database API Specification v2.0
chdb.dbapi.connections— управление подключениями к базе данныхchdb.dbapi.cursors— операции с курсорами базы данных
Примеры
исключение chdb.dbapi.err.DataError
Базовый класс: DatabaseError
Исключение, возникающее при ошибках, обусловленных проблемами с обрабатываемыми данными.
Это исключение генерируется, когда операции с базой данных завершаются ошибкой из‑за проблем с обрабатываемыми данными, например:
- Операции деления на ноль
- Числовые значения вне допустимого диапазона
- Недопустимые значения даты/времени
- Ошибки усечения строк
- Ошибки преобразования типов
- Недопустимый формат данных для типа столбца
Вызывает
| Исключение | Условие |
|---|---|
DataError | При ошибке проверки или обработки данных |
Примеры
исключение chdb.dbapi.err.DatabaseError
Базовый класс: Error
Исключение, возникающее при ошибках, связанных с базой данных.
Это базовый класс для всех ошибок, связанных с базой данных. Он охватывает все ошибки, которые возникают во время операций с базой данных и относятся к самой базе данных, а не к интерфейсу.
Типичные сценарии включают:
- Ошибки выполнения SQL
- Проблемы с подключением к базе данных
- Ошибки, связанные с транзакциями
- Нарушения ограничений, специфичных для базы данных
Выступает родительским классом для более специализированных типов ошибок базы данных,
таких как DataError, OperationalError и др.
исключение chdb.dbapi.err.Error
Базовый класс: StandardError
Исключение, которое является базовым классом для всех остальных ошибок (кроме Warning).
Это базовый класс для всех исключений ошибок в chdb, за исключением предупреждений. Он выступает родительским классом для всех состояний ошибок базы данных, которые мешают успешному завершению операций.
Эта иерархия исключений соответствует спецификации Python DB API 2.0.
См. также
Warning— для нефатальных предупреждений, которые не препятствуют завершению операций
исключение chdb.dbapi.err.IntegrityError
Базовый класс: DatabaseError
Исключение, возникающее при нарушении реляционной целостности базы данных.
Это исключение возникает, когда операции с базой данных нарушают ограничения целостности, включая:
- Нарушения ограничений внешних ключей
- Нарушения ограничений первичных или уникальных ключей (дублирующиеся ключи)
- Нарушения ограничений CHECK
- Нарушения ограничений NOT NULL
- Нарушения ссылочной целостности
Генерируемые исключения
| Исключение | Условие |
|---|---|
IntegrityError | При нарушении ограничений целостности базы данных |
Примеры
exception chdb.dbapi.err.InterfaceError
Bases: Error
Исключение, возникающее при ошибках, связанных с интерфейсом базы данных, а не с самой базой данных.
Это исключение генерируется при возникновении проблем с реализацией интерфейса базы данных, таких как:
- Недопустимые параметры подключения
- Некорректное использование API (вызов методов у закрытых подключений)
- Ошибки протокола на уровне интерфейса
- Ошибки импорта или инициализации модуля
Исключения
| Исключение | Условие |
|---|---|
InterfaceError | Когда интерфейс базы данных сталкивается с ошибками, не связанными с операциями с БД |
Эти ошибки, как правило, являются программными ошибками или проблемами конфигурации, которые можно устранить, исправив клиентский код или конфигурацию.
exception chdb.dbapi.err.InternalError
Bases: DatabaseError
Исключение, генерируемое при возникновении внутренней ошибки базы данных.
Это исключение генерируется, когда система базы данных сталкивается с внутренними ошибками, не вызванными приложением, такими как:
- Недопустимое состояние курсора (курсор больше не является действительным)
- Несогласованное состояние транзакции (транзакция рассинхронизирована)
- Проблемы, связанные с повреждением базы данных
- Повреждение внутренних структур данных
- Системные ошибки базы данных
Исключения
| Исключение | Условие |
|---|---|
InternalError | Когда база данных сталкивается с внутренними несоответствиями |
Внутренние ошибки могут указывать на серьезные проблемы с базой данных, которые требуют внимания администратора базы данных. Эти ошибки, как правило, не могут быть устранены с помощью логики повторных попыток на уровне приложения.
Эти ошибки, как правило, находятся вне контроля приложения и могут потребовать перезапуска или операций по восстановлению базы данных.
exception chdb.dbapi.err.NotSupportedError
Bases: DatabaseError
Исключение, генерируемое, когда метод или API базы данных не поддерживается.
Это исключение генерируется, когда приложение пытается использовать функции базы данных или методы API, которые не поддерживаются текущей конфигурацией или версией базы данных, например:
- Запрос
rollback()на соединениях без поддержки транзакций - Использование расширенных возможностей SQL, не поддерживаемых текущей версией базы данных
- Вызов методов, не реализованных текущим драйвером
- Попытка использовать отключенные функции базы данных
Исключения
| Исключение | Условие |
|---|---|
NotSupportedError | Когда осуществляется доступ к неподдерживаемым функциям базы данных |
Примеры
Проверьте документацию по базе данных и возможности драйвера, чтобы избежать этих ошибок. По возможности предусмотрите корректные механизмы деградации сервиса.
exception chdb.dbapi.err.OperationalError
Bases: DatabaseError
Исключение, возникающее при ошибках, связанных с работой базы данных.
Это исключение выбрасывается при ошибках, которые возникают во время работы базы данных и не обязательно находятся под контролем программиста, включая:
- Неожиданное отключение от базы данных
- Сервер базы данных не найден или недоступен
- Сбои при обработке транзакций
- Ошибки выделения памяти во время обработки
- Исчерпание дискового пространства или других ресурсов
- Внутренние ошибки сервера базы данных
- Сбои аутентификации или авторизации
Raises
| Exception | Condition |
|---|---|
OperationalError | Когда операции с базой данных завершаются сбоем по операционным причинам |
Эти ошибки, как правило, временные и могут быть устранены повторным выполнением операции или решением проблем на системном уровне.
Некоторые операционные ошибки могут указывать на серьёзные проблемы в системе, требующие вмешательства администратора.
exception chdb.dbapi.err.ProgrammingError
Bases: DatabaseError
Исключение, возникающее при программных ошибках в операциях с базой данных.
Это исключение выбрасывается при программных ошибках в использовании базы данных приложением, включая:
- Таблица или столбец не найдены
- Таблица или индекс уже существуют при создании
- Ошибки синтаксиса SQL в операторах
- Неверное количество параметров в подготовленных выражениях
- Недопустимые SQL‑операции (например, DROP для несуществующих объектов)
- Некорректное использование методов API базы данных
Raises
| Исключение | Условие |
|---|---|
ProgrammingError | Когда SQL‑выражения или использование API содержат ошибки |
Examples
exception chdb.dbapi.err.StandardError
Bases: Exception
Исключение, связанное с операциями с chdb.
Это базовый класс для всех исключений, связанных с chdb. Он наследуется от встроенного в Python класса Exception и служит корнем иерархии исключений для операций с базой данных.
Этот класс исключений соответствует спецификации Python DB API 2.0 по обработке исключений базы данных.
exception chdb.dbapi.err.Warning
Bases: StandardError
Исключение, генерируемое для важных предупреждений, таких как усечение данных при вставке и т. п.
Это исключение генерируется, когда операция с базой данных завершается, но при этом возникают важные предупреждения, которые следует довести до сведения приложения. Типичные сценарии включают:
- Усечение данных при вставке
- Потерю точности при числовых преобразованиях
- Предупреждения при преобразовании кодировок/наборов символов
Это соответствует спецификации Python DB API 2.0 для исключений-предупреждений.
Константы модуля
chdb.dbapi.apilevel = '2.0'
Создает новый строковый объект из заданного объекта. Если заданы
encoding или errors, то объект должен предоставлять буфер данных,
который будет декодирован с использованием указанной кодировки и обработчика ошибок.
В противном случае возвращается результат object._\_str_\_() (если определен)
или repr(object).
- по умолчанию
encodingимеет значениеutf-8. - по умолчанию
errorsимеет значениеstrict.
chdb.dbapi.threadsafety = 1
Преобразует число или строку в целое число или возвращает 0, если аргументы не переданы. Если x — число, возвращает x._int_(). Для чисел с плавающей запятой выполняется усечение в сторону нуля.
Если x не является числом или указан base, то x должен быть строкой, объектом bytes или bytearray, представляющим целочисленный литерал в заданной системе счисления. Литерал может начинаться с «+» или «-» и быть окружён пробельными символами. Система счисления по умолчанию — 10. Допустимые значения системы счисления: 0 и 2–36. Значение 0 означает, что основание системы счисления определяется по строке, как для целочисленного литерала.
chdb.dbapi.paramstyle = 'format'
Создает новый строковый объект из заданного объекта. Если указаны encoding или errors, то объект должен предоставлять буфер данных, который будет декодирован с использованием указанной кодировки и обработчика ошибок. В противном случае возвращается результат object._str_() (если определен) или repr(object). По умолчанию encoding имеет значение ‘utf-8’. По умолчанию errors имеет значение ‘strict’.
Константы типов
chdb.dbapi.STRING = frozenset({247, 253, 254})
Расширенный frozenset для сравнения типов в DB-API 2.0.
Этот класс расширяет frozenset, чтобы поддерживать семантику сравнения
типов в DB-API 2.0. Он позволяет выполнять гибкую проверку типов, при которой
отдельные значения могут сравниваться с множеством с использованием
операторов равенства и неравенства.
Он используется для констант типов, таких как STRING, BINARY, NUMBER и т. д.,
чтобы можно было выполнять сравнения вида field_type == STRING, где field_type —
это одиночное значение типа.
Примеры
chdb.dbapi.BINARY = frozenset({249, 250, 251, 252})
Расширенный frozenset для сравнения типов в DB-API 2.0.
Этот класс расширяет frozenset, чтобы поддерживать семантику сравнения типов DB-API 2.0. Он позволяет выполнять гибкую проверку типов, при которой отдельные элементы можно сравнивать с множеством с использованием как операторов равенства, так и неравенства.
Он используется для констант типов, таких как STRING, BINARY, NUMBER и т.п., чтобы можно было выполнять сравнения вроде «field_type == STRING», где field_type — это одно значение типа.
Примеры
chdb.dbapi.NUMBER = frozenset({0, 1, 3, 4, 5, 8, 9, 13})
Расширенное множество frozenset для сравнения типов в соответствии с DB-API 2.0.
Этот класс расширяет frozenset, чтобы поддерживать семантику сравнения типов, определённую в DB-API 2.0.
Он позволяет гибко выполнять проверку типов, когда отдельные элементы можно сравнивать
с набором с использованием операторов равенства и неравенства.
Он используется для констант типов, таких как STRING, BINARY, NUMBER и т. д., чтобы выполнять сравнения вида “field_type == STRING”, где field_type — это отдельное значение типа.
Примеры
chdb.dbapi.DATE = frozenset({10, 14})
Расширенный frozenset для сравнения типов в DB-API 2.0.
Этот класс расширяет frozenset, чтобы поддерживать семантику сравнения типов DB-API 2.0. Он обеспечивает гибкую проверку типов, при которой отдельные элементы могут сравниваться с множеством с использованием операторов равенства и неравенства.
Он используется для констант типов, таких как STRING, BINARY, NUMBER и т. д., чтобы выполнять сравнения вроде “field_type == STRING”, где field_type — это отдельное значение типа.
Примеры
chdb.dbapi.TIME = frozenset({11})
Расширенное множество frozenset для сравнения типов в DB-API 2.0.
Этот класс расширяет frozenset, чтобы поддерживать семантику сравнения типов, определённую в DB-API 2.0.
Он позволяет выполнять гибкую проверку типов, при которой отдельные элементы могут
сравниваться с множеством с использованием как операторов равенства, так и неравенства.
Он используется для констант типов, таких как STRING, BINARY, NUMBER и т.п., чтобы можно было выполнять сравнения вида “field_type == STRING”, где field_type — это отдельное значение типа.
Примеры
chdb.dbapi.TIMESTAMP = frozenset({7, 12})
Расширенный frozenset для сравнения типов по стандарту DB-API 2.0.
Этот класс расширяет frozenset, чтобы поддерживать семантику сравнения типов согласно стандарту DB-API 2.0. Он позволяет выполнять гибкую проверку типов, при которой отдельные элементы можно сравнивать с множеством с помощью операторов равенства и неравенства.
Он используется для констант типов, таких как STRING, BINARY, NUMBER и т. д., чтобы можно было выполнять сравнения вида “field_type == STRING”, где field_type — это одиночное значение типа.
Примеры
chdb.dbapi.DATETIME = frozenset({7, 12})
Расширенный frozenset для сравнения типов в соответствии с DB-API 2.0.
Этот класс расширяет frozenset, чтобы поддерживать семантику сравнения типов в DB-API 2.0.
Он позволяет выполнять гибкую проверку типов, при которой отдельные элементы можно сравнивать
с множеством с использованием как операторов равенства, так и неравенства.
Он используется для констант типов, таких как STRING, BINARY, NUMBER и т. д., чтобы выполнять сравнения вида “field_type == STRING”, где field_type — это отдельное значение типа.
Примеры
chdb.dbapi.ROWID = frozenset({})
Расширенный frozenset для сравнения типов в DB-API 2.0.
Этот класс расширяет frozenset, чтобы поддерживать семантику сравнения типов DB-API 2.0. Он позволяет выполнять гибкую проверку типов, при которой отдельные элементы могут сравниваться с множеством с использованием как операторов равенства, так и неравенства.
Он используется для констант типов, таких как STRING, BINARY, NUMBER и т. д., чтобы выполнять сравнения вида «field_type == STRING», где field_type — это одиночное значение типа.
Примеры
Примеры использования
Простой пример запроса:
Работа с данными:
Управление соединениями:
Рекомендации
- Управление соединениями: Всегда закрывайте соединения и курсоры после завершения работы
- Менеджеры контекста: Используйте операторы
withдля автоматической очистки ресурсов - Пакетная обработка: Используйте
fetchmany()для больших наборов результатов - Обработка ошибок: Оборачивайте операции с базой данных в блоки try-except
- Привязка параметров: По возможности используйте параметризованные запросы
- Управление памятью: Избегайте использования
fetchall()для очень больших наборов данных
- Интерфейс DB-API 2.0 в chDB совместим с большинством инструментов для работы с базами данных Python
- Интерфейс обеспечивает потокобезопасность уровня 1 (потоки могут совместно использовать модули, но не соединения)
- Строки подключения поддерживают те же параметры, что и сессии chDB
- Поддерживаются все стандартные исключения DB-API 2.0
- Всегда закрывайте курсоры и соединения во избежание утечек ресурсов
- Большие наборы результатов следует обрабатывать пакетами
- Синтаксис привязки параметров соответствует стилю форматирования:
%s
Пользовательские функции (UDF)
Модуль пользовательских функций для chDB.
Этот модуль предоставляет возможности для создания и управления пользовательскими функциями (UDF) в chDB. Он позволяет расширять функциональность chDB за счёт написания пользовательских функций на Python, которые можно вызывать из SQL-запросов.
chdb.udf.chdb_udf
Декоратор для пользовательских функций chDB на Python (UDF, User Defined Function).
Синтаксис
Параметры
| Параметр | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
return_type | str | "String" | Тип возвращаемого значения функции; должен быть одним из типов данных ClickHouse |
Примечания
- Функция должна быть stateless (без сохранения состояния). Поддерживаются только UDF, UDAF не поддерживаются.
- Тип возвращаемого значения по умолчанию —
String. Тип возвращаемого значения должен быть одним из типов данных ClickHouse. - Функция должна принимать аргументы типа
String. Все аргументы — строки. - Функция будет вызываться для каждой строки входных данных.
- Функция должна быть чистой функцией Python. Импортируйте все модули, используемые внутри функции.
- Используется тот же интерпретатор Python, что и для запуска скрипта.
Пример
chdb.udf.generate_udf
Генерирует файлы конфигурации UDF и исполняемый скрипт.
Эта функция создаёт необходимые файлы для пользовательской функции (User Defined Function, UDF) в chDB:
- Исполняемый Python-скрипт, который обрабатывает входные данные
- XML-файл конфигурации, который регистрирует UDF в ClickHouse
Синтаксис
Параметры
| Parameter | Type | Description |
|---|---|---|
func_name | str | Имя функции UDF |
args | list | Список имён аргументов функции |
return_type | str | Тип возвращаемого значения функции в ClickHouse |
udf_body | str | Тело исходного кода функции UDF на Python |
Эта функция обычно вызывается декоратором @chdb_udf и не должна вызываться пользователями напрямую.
Вспомогательные утилиты
Вспомогательные функции и средства для chDB.
Этот модуль содержит различные вспомогательные функции для работы с chDB, включая определение типов данных, вспомогательные средства для преобразования данных и утилиты для отладки.
chdb.utils.convert_to_columnar
Преобразует список словарей в колоночный формат.
Эта функция принимает список словарей и преобразует его в словарь, в котором каждый ключ соответствует столбцу, а каждое значение — это список значений этого столбца. Отсутствующие значения в словарях представляются значением None.
Синтаксис
Параметры
| Параметр | Тип | Описание |
|---|---|---|
items | List[Dict[str, Any]] | Список словарей для преобразования |
Возвращает
| Возвращаемый тип | Описание |
|---|---|
Dict[str, List[Any]] | Словарь, в котором ключи — имена столбцов, а значения — списки значений этих столбцов |
Пример
chdb.utils.flatten_dict
Преобразует вложенный словарь в плоский.
Эта функция принимает вложенный словарь и преобразует его в плоский, объединяя вложенные ключи с помощью разделителя. Списки словарей сериализуются в JSON-строки.
Синтаксис
Параметры
| Параметр | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
d | Dict[str, Any] | обязателен | Словарь, который нужно преобразовать в плоский вид |
parent_key | str | "" | Базовый ключ, добавляемый в начало каждого ключа |
sep | str | "_" | Разделитель, используемый между объединёнными ключами |
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
Dict[str, Any] | Плоский словарь |
Пример
chdb.utils.infer_data_type
Определяет наиболее подходящий тип данных для списка значений.
Эта функция анализирует список значений и определяет наиболее подходящий
тип данных, который может представить все значения в списке. Она рассматривает целые числа,
беззнаковые целые числа, десятичные числа и числа с плавающей запятой и по умолчанию использует string, если
значения не могут быть представлены ни одним числовым типом или если все значения — None.
Синтаксис
Параметры
| Параметр | Тип | Описание |
|---|---|---|
values | List[Any] | Список значений для анализа. Значения могут иметь любой тип |
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
str | Строка, представляющая определённый тип данных. Возможные возвращаемые значения: "int8", "int16", "int32", "int64", "int128", "int256", "uint8", "uint16", "uint32", "uint64", "uint128", "uint256", "decimal128", "decimal256", "float32", "float64" или "string". |
- Если все значения в списке равны None, функция возвращает "string".
- Если хотя бы одно значение в списке является строкой, функция сразу возвращает "string".
- Функция предполагает, что числовые значения могут быть представлены как целые числа, десятичные дроби или числа с плавающей запятой в зависимости от их диапазона и точности.
chdb.utils.infer_data_types
Определяет типы данных для каждого столбца в колоночной структуре данных.
Эта функция анализирует значения в каждом столбце и определяет наиболее подходящий тип данных для каждого столбца на основе выборки данных.
Синтаксис
Параметры
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
column_data | Dict[str, List[Any]] | обязательный | Словарь, где ключами являются имена столбцов, а значениями — списки значений столбцов |
n_rows | int | 10000 | Количество строк, выбираемых для определения типа данных |
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
List[tuple] | Список кортежей, каждый из которых содержит имя столбца и его выведенный тип данных |
Абстрактные базовые классы
class chdb.rwabc.PyReader(data: Any)`
Базовый класс: ABC
abstractmethod read
Считывает указанное количество строк из заданных столбцов и возвращает список объектов, каждый из которых представляет собой последовательность значений для одного столбца.
Параметры
| Параметр | Тип | Описание |
|---|---|---|
col_names | List[str] | Список имён столбцов для чтения |
count | int | Максимальное количество строк для чтения |
Возвращает
| Тип возврата | Описание |
|---|---|
List[Any] | Список последовательностей, по одной для каждого столбца |
класс chdb.rwabc.PyWriter
Базовый класс: ABC
abstractmethod finalize
Собрать и вернуть окончательные данные из блоков. Должен быть реализован в подклассах.
Возвращает
| Тип возвращаемого значения | Описание |
|---|---|
bytes | Конечные сериализованные данные |
abstractmethod write
Сохраняет столбцы данных в блоки. Должен быть реализован в подклассах.
Параметры
| Параметр | Тип | Описание |
|---|---|---|
col_names | List[str] | Список названий столбцов, которые записываются |
columns | List[List[Any]] | Данные столбцов в виде списка; каждый столбец — отдельный список |
Обработка исключений
class chdb.ChdbError
Базовый класс: Exception
Базовый класс исключений для ошибок, связанных с chDB.
Это исключение генерируется, когда выполнение запроса chDB завершается сбоем или приводит к ошибке. Оно наследуется от стандартного класса Python Exception и предоставляет информацию об ошибке из основного движка ClickHouse.
Сообщение об исключении обычно содержит подробную информацию об ошибке из ClickHouse, включая синтаксические ошибки, несоответствия типов, отсутствующие таблицы/столбцы и другие проблемы выполнения запроса.
Переменные
| Переменная | Тип | Описание |
|---|---|---|
args | - | Кортеж, содержащий сообщение об ошибке и любые дополнительные аргументы |
Примеры
Это исключение автоматически выбрасывается функцией chdb.query() и связанными с ней функциями, когда движок ClickHouse сообщает об ошибке. Следует перехватывать это исключение при обработке запросов, которые могут завершиться ошибкой, чтобы обеспечить корректную обработку ошибок в вашем приложении.
Информация о версии
chdb.chdb_version = ('3', '6', '0')
Встроенная неизменяемая последовательность.
Если аргумент не указан, конструктор возвращает пустой кортеж.
Если передан итерируемый объект iterable, кортеж инициализируется его элементами.
Если аргумент является кортежем, возвращается тот же самый объект.
chdb.engine_version = '25.5.2.1'
Создаёт новый строковый объект из переданного объекта. Если указаны
encoding или errors, то объект должен предоставлять буфер данных,
который будет декодирован с использованием заданной кодировки и
обработчика ошибок. В противном случае возвращается результат
object.*_str*_() (если определён) или repr(object).
- encoding по умолчанию —
utf-8; - errors по умолчанию —
strict.
chdb.__version__ = '3.6.0'
Создаёт новый строковый объект из переданного объекта. Если указаны
encoding или errors, то объект должен предоставлять буфер данных,
который будет декодирован с использованием заданной кодировки и
обработчика ошибок. В противном случае возвращается результат
object.*_str*_() (если определён) или repr(object).
encodingпо умолчанию —utf-8.errorsпо умолчанию —strict.