Перейти к основному содержанию

Основные функции для запросов

chdb.query

Выполняет SQL-запрос с помощью движка chDB. Это основная функция для выполнения SQL-команд с использованием встроенного движка ClickHouse. Поддерживает различные форматы вывода и может работать с базами данных в памяти или файловыми базами данных. Синтаксис
Параметры Возвращает Возвращает результат запроса в указанном формате: Вызывает Примеры

chdb.sql

Выполняет SQL-запрос с помощью движка chDB. Это основная функция для выполнения SQL-команд с помощью встроенного движка ClickHouse. Поддерживает различные форматы вывода и может работать с базами данных в памяти или файловыми базами данных. Синтаксис
Параметры Возвращает Возвращает результат запроса в указанном формате: Вызывает Примеры

chdb.to_arrowTable

Преобразует результат запроса в таблицу PyArrow. Преобразует результат запроса chDB в таблицу PyArrow для эффективной обработки данных в столбцовом формате. Возвращает пустую таблицу, если результат отсутствует. Синтаксис
Параметры Возвращаемое значение Исключения Пример

chdb.to_df

Преобразует результат запроса в pandas DataFrame. Преобразует результат запроса chDB в pandas DataFrame: сначала в таблицу PyArrow, а затем в pandas с использованием многопоточности для повышения производительности. Синтаксис
Параметры Возвращаемое значение Исключения Пример

Управление соединениями и сеансами

Доступны следующие функции сеанса:

chdb.connect

Создаёт соединение с фоновым сервером chDB. Эта функция устанавливает соединение с движком базы данных chDB (ClickHouse). Для каждого процесса допускается только одно открытое соединение. Несколько вызовов с одной и той же строкой подключения вернут один и тот же объект соединения.
Параметры: Базовые форматы С параметрами запроса Обработка параметров запроса Параметры запроса передаются в движок ClickHouse как аргументы запуска. Специальная обработка параметров: Полный список параметров см. в clickhouse local --help --verbose Возвращает Вызывает
Поддерживается только одно подключение на процесс. При создании нового подключения все существующие подключения будут закрыты.
Примеры
См. также
  • Connection — класс подключения к базе данных
  • Cursor — курсор базы данных для операций DB-API 2.0

Обработка исключений

class chdb.ChdbError

Базовый класс: Exception Базовый класс исключений для ошибок, связанных с chDB. Это исключение возникает, когда выполнение запроса chDB завершается с ошибкой или в процессе возникает ошибка. Оно наследуется от стандартного класса Python Exception и предоставляет информацию об ошибке от базового движка ClickHouse.

class chdb.session.Session

Базовый класс: object Сеанс сохраняет состояние запроса. Если path имеет значение None, будет создан временный каталог, который будет использоваться как путь к базе данных, и этот временный каталог будет удалён при закрытии сеанса. Вы также можете передать path, чтобы создать базу данных по этому пути, где будут храниться ваши данные. Вы также можете использовать строку подключения, чтобы передать path и другие параметры.
Примеры
Обработка аргументов строки подключенияСтроки подключения, содержащие параметры запроса, например “file:test.db?param1=value1&param2=value2”, передают “param1=value1” движку ClickHouse в качестве аргументов запуска.Подробнее см. clickhouse local –help –verboseОбработка некоторых специальных аргументов:
  • “mode=ro” будет преобразован в “–readonly=1” для ClickHouse (режим только для чтения)
Важно
  • В каждый момент времени может существовать только один сеанс. Если вы хотите создать новый сеанс, необходимо закрыть текущий.
  • При создании нового сеанса текущий будет закрыт.

cleanup

Очистка ресурсов сеанса с обработкой исключений. Этот метод пытается закрыть сеанс, подавляя все исключения, которые могут возникнуть в процессе очистки. Он особенно полезен в сценариях обработки ошибок или когда нужно гарантировать выполнение очистки независимо от состояния сеанса. Синтаксис
Этот метод никогда не сгенерирует исключение, поэтому его можно безопасно вызывать в блоках finally или в деструкторах.
Примеры
См. также
  • close() - Для явного закрытия сеанса с пробросом ошибок

close

Закрывает сеанс и освобождает ресурсы. Этот метод закрывает базовое соединение и сбрасывает глобальное состояние сеанса. После вызова этого метода сеанс становится недействительным, и его нельзя использовать для дальнейших запросов. Синтаксис
Этот метод автоматически вызывается, когда сеанс используется в качестве менеджера контекста или когда объект сеанса уничтожается.
ВажноЛюбая попытка использовать сеанс после вызова close() приведёт к ошибке.
Примеры

query

Выполняет SQL-запрос и возвращает результаты. Этот метод выполняет SQL-запрос к базе данных текущего сеанса и возвращает результаты в указанном формате. Метод поддерживает различные форматы вывода и сохраняет состояние сеанса между запросами. Синтаксис
Параметры Возвращает Возвращает результаты запроса в указанном формате. Точный возвращаемый тип зависит от параметра fmt:
  • Строковые форматы (CSV, JSON и т. д.) возвращают str
  • Двоичный формат (Arrow, Parquet) возвращает bytes
Исключения
Формат «Debug» не поддерживается и будет автоматически преобразован в «CSV» с предупреждением. Для отладки используйте параметры строки подключения.
ПредупреждениеЭтот метод выполняет запрос синхронно и загружает все результаты в память. Для больших результирующих наборов рассмотрите возможность использования send_query() для стриминга результатов.
Примеры
См. также
  • send_query() — Для потокового выполнения запросов
  • sql — Псевдоним этого метода

send_query

Выполняет SQL-запрос и возвращает итератор для потокового получения результатов. Этот метод выполняет SQL-запрос к базе данных сеанса и возвращает объект потокового результата, который позволяет перебирать результаты, не загружая всё в память сразу. Это особенно полезно для больших результирующих наборов. Синтаксис
Параметры Возвращает Вызывает исключения
Формат «Debug» не поддерживается и будет автоматически преобразован в «CSV» с предупреждением. Для отладки используйте параметры строки подключения.
Возвращаемый объект StreamingResult следует использовать без задержки или сохранить должным образом, так как он сохраняет подключение к базе данных.
Примеры
См. также
  • query() — для выполнения запросов без использования стриминга
  • chdb.state.sqlitelike.StreamingResult — итератор результатов стриминга

sql

Выполняет SQL-запрос и возвращает результаты. Этот метод выполняет SQL-запрос к базе данных текущего сеанса и возвращает результаты в указанном формате. Метод поддерживает различные выходные форматы и сохраняет состояние сеанса между запросами. Синтаксис
Параметры Возвращает Возвращает результаты запроса в указанном формате. Точный тип возвращаемого значения зависит от параметра формата:
  • Строковые форматы (CSV, JSON и т. д.) возвращают str
  • Двоичные форматы (Arrow, Parquet) возвращают bytes
Вызывает:
Формат “Debug” не поддерживается и будет автоматически преобразован в “CSV” с предупреждением. Для отладки используйте параметры строки подключения вместо него.
ПредупреждениеЭтот method выполняет запрос синхронно и загружает все результаты в память. Для больших результирующих наборов лучше использовать send_query() для стриминга результатов.
Примеры
См. также
  • send_query() — Для выполнения запросов в потоковом режиме
  • sql — Псевдоним этого метода

Управление состоянием

chdb.state.connect

Создаёт подключение к фоновому серверу chDB. Эта функция устанавливает подключение к движку базы данных chDB (ClickHouse). В каждом процессе может быть открыто только одно подключение. Несколько вызовов с одной и той же строкой подключения вернут один и тот же объект подключения. Синтаксис
Параметры Базовые форматы Поддерживаемые форматы строки подключения: С параметрами запроса Обработка параметров запроса Параметры запроса передаются движку ClickHouse как аргументы запуска. Специальная обработка параметров: Полный список параметров см. в clickhouse local --help --verbose Возвращает Выбрасывает исключения
ПредупреждениеПоддерживается только одно подключение на процесс. При создании нового подключения текущее подключение будет закрыто.
Примеры
См. также
  • Connection — класс подключения к базе данных
  • Cursor — курсор базы данных для операций DB-API 2.0

class chdb.state.sqlitelike.Connection

Базовый класс: object Синтаксис

close

Закрывает подключение и освобождает ресурсы. Этот метод закрывает подключение к базе данных и освобождает все связанные с ним ресурсы, включая активные курсоры. После вызова этого метода подключение становится недействительным и не может использоваться для дальнейших операций. Синтаксис
Этот метод идемпотентен — его можно безопасно вызывать несколько раз.
ПредупреждениеВсе выполняющиеся в данный момент потоковые запросы будут отменены при закрытии подключения. Убедитесь, что все важные данные обработаны до его закрытия.
Примеры

cursor

Создаёт объект Cursor для выполнения запросов. Этот метод создаёт курсор базы данных, предоставляющий стандартный интерфейс DB-API 2.0 для выполнения запросов и получения результатов. Курсор позволяет более гибко управлять выполнением запросов и извлечением результатов. Синтаксис
Возвращает
При создании нового курсора любой существующий курсор, связанный с этим подключением, будет заменён. Для одного подключения поддерживается только один курсор.
Примеры
См. также
  • Cursor — Реализация курсора для работы с базой данных

query

Выполняет SQL-запрос и возвращает результат целиком. Этот метод синхронно выполняет SQL-запрос и возвращает полный результирующий набор. Он поддерживает различные форматы вывода и автоматически выполняет постобработку в зависимости от формата. Синтаксис
Параметры: Возвращает Вызывает исключения
ПредупреждениеЭтот метод загружает в память весь результирующий набор. Для больших результатов рекомендуется использовать send_query() со стримингом.
Примеры
См. также
  • send_query() — Для выполнения запросов в потоковом режиме

send_query

Выполняет SQL-запрос и возвращает итератор потокового результата. Этот метод выполняет SQL-запрос и возвращает объект StreamingResult, который позволяет перебирать результаты, не загружая всё сразу в память. Это идеально подходит для обработки больших результирующих наборов. Синтаксис
Параметры Возвращает Вызывает
Только формат «Arrow» поддерживает метод record_batch() у возвращаемого StreamingResult.
Примеры
См. также
  • query() — для выполнения запросов без стриминга
  • StreamingResult — итератор для потоковых результатов

class chdb.state.sqlitelike.StreamingResult

Базовый класс: object Итератор потоковых результатов для обработки больших результатов запросов. Этот класс предоставляет интерфейс итератора для потоковой обработки результатов запросов без загрузки всего результирующего набора в память. Он поддерживает различные выходные форматы и предоставляет методы для ручного получения результатов и потоковой передачи батчей PyArrow RecordBatch.

fetch

Возвращает следующий фрагмент результатов стриминга. Этот метод возвращает следующий доступный фрагмент данных из результата потокового запроса. Формат возвращаемых данных зависит от формата, указанного при запуске потокового запроса. Синтаксис
Возвращает Примеры

cancel

Отменяет потоковый запрос и освобождает ресурсы. Этот метод отменяет любой выполняемый потоковый запрос и освобождает связанные с ним ресурсы. Его следует вызывать, если вы хотите прекратить обработку результатов до завершения потока. Синтаксис
Примеры

close

Закрывает потоковый результат и освобождает ресурсы. Псевдоним для cancel(). Закрывает итератор потокового результата и освобождает все связанные с ним ресурсы. Синтаксис

record_batch

Создает PyArrow RecordBatchReader для эффективной пакетной обработки. Этот метод создает PyArrow RecordBatchReader, который позволяет эффективно перебирать результаты запроса в формате Arrow. Это наиболее эффективный способ обрабатывать большие результирующие наборы при использовании PyArrow. Синтаксис
Параметры Возвращаемое значение
Этот метод доступен только в том случае, если потоковый запрос был инициирован с format="Arrow". При использовании с другими форматами будет вызвана ошибка.
Примеры

Протокол итерации

StreamingResult поддерживает протокол итерации Python, поэтому его можно использовать напрямую в циклах for:

Протокол контекстного менеджера

StreamingResult поддерживает протокол контекстного менеджера для автоматического освобождения ресурсов:

класс chdb.state.sqlitelike.Cursor

Базовый класс: object

close

Закрывает курсор и освобождает ресурсы. Этот метод закрывает курсор и освобождает все связанные с ним ресурсы. После вызова этого метода курсор становится недействительным и не может использоваться для выполнения дальнейших операций. Синтаксис
Этот метод идемпотентен — его можно безопасно вызывать несколько раз. При закрытии соединения курсор также закрывается автоматически.
Примеры

column_names

Возвращает список имён столбцов из последнего выполненного запроса. Этот метод возвращает имена столбцов из последнего выполненного запроса SELECT. Имена возвращаются в том же порядке, в котором они указаны в результирующем наборе. Синтаксис
Возвращает Примеры
См. также
  • column_types() — Получить информацию о типах столбцов
  • description — описание столбца в DB-API 2.0

column_types

Возвращает список типов столбцов из последнего выполненного запроса. Этот метод возвращает имена типов столбцов ClickHouse из самого недавно выполненного SELECT-запроса. Типы возвращаются в том же порядке, в котором они представлены в результирующем наборе. Синтаксис
Возвращает Примеры
См. также
  • column_names() — получить информацию об именах столбцов
  • description — описание столбцов в DB-API 2.0

commit

Зафиксировать любую незавершённую транзакцию. Этот метод фиксирует любую незавершённую транзакцию базы данных. В ClickHouse большинство операций фиксируются автоматически, но этот метод предусмотрен для совместимости с DB-API 2.0.
В ClickHouse операции обычно фиксируются автоматически, поэтому явная фиксация обычно не требуется. Этот метод предусмотрен для совместимости со стандартным сценарием работы DB-API 2.0.
Синтаксис
Примеры

свойство description : list

Возвращает описание столбцов в соответствии со спецификацией DB-API 2.0. Это свойство возвращает список 7-элементных кортежей, описывающих каждый столбец в результирующем наборе последнего выполненного запроса SELECT. Каждый кортеж содержит: (name, type_code, display_size, internal_size, precision, scale, null_ok) В настоящее время заполняются только поля name и type_code, а для остальных установлено значение None. Возвращает
Это соответствует спецификации DB-API 2.0 для cursor.description. Только первые два элемента (name и type_code) содержат значимые данные в данной реализации.
Примеры
См. также
  • column_names() — Получить только имена столбцов
  • column_types() — Получить только типы столбцов

execute

Выполняет SQL-запрос и подготавливает результаты для получения. Этот метод выполняет SQL-запрос и подготавливает результаты для дальнейшего получения с помощью методов fetch. Он обрабатывает разбор данных результата и автоматическое преобразование типов данных ClickHouse. Синтаксис
Параметры: Исключения
Этот метод соответствует спецификации DB-API 2.0 для cursor.execute(). После выполнения используйте fetchone(), fetchmany() или fetchall(), чтобы получить результаты.
Метод автоматически преобразует типы данных ClickHouse в соответствующие типы Python:
  • Int/UInt types → int
  • Float types → float
  • String/FixedString → str
  • DateTime → datetime.datetime
  • Date → datetime.date
  • Bool → bool
Примеры
См. также
  • fetchone() — Получить одну строку
  • fetchmany() — Получить несколько строк
  • fetchall() — Получить все оставшиеся строки

fetchall

Получает все оставшиеся строки из результата запроса. Этот метод возвращает все оставшиеся строки из текущего набора результатов запроса, начиная с текущей позиции курсора. Он возвращает кортеж кортежей строк с соответствующим преобразованием в типы Python. Синтаксис
Возвращает:
ПредупреждениеЭтот метод загружает в память сразу все оставшиеся строки. Для больших результирующих наборов рекомендуется использовать fetchmany(), чтобы обрабатывать результаты батчами.
Примеры
См. также
  • fetchone() - Выборка одной строки
  • fetchmany() - Выборка нескольких строк батчами

fetchmany

Извлекает несколько строк из результата запроса. Этот метод извлекает до ‘size’ строк из текущего набора результатов запроса. Он возвращает кортеж кортежей строк, где каждая строка содержит значения столбцов с соответствующим преобразованием в типы Python. Синтаксис
Параметры Возвращает
Этот метод соответствует спецификации DB-API 2.0. Он вернет меньше чем ‘size’ строк, если результирующий набор исчерпан.
Примеры
См. также
  • fetchone() — Получить одну строку
  • fetchall() — Получить все оставшиеся строки

fetchone

Извлекает следующую строку из результата запроса. Этот метод извлекает следующую доступную строку из текущего результирующего набора запроса. Он возвращает кортеж со значениями столбцов с соответствующим преобразованием к типам Python. Синтаксис
Возвращает:
Этот метод соответствует спецификации DB-API 2.0. Значения столбцов автоматически преобразуются в соответствующие типы Python в зависимости от типов столбцов ClickHouse.
Примеры
См. также
  • fetchmany() - Получить несколько строк
  • fetchall() - Получить все оставшиеся строки

chdb.state.sqlitelike

Преобразует результат запроса в таблицу PyArrow. Эта функция преобразует результаты запроса chdb в таблицу PyArrow, что обеспечивает эффективный доступ к столбцовым данным и совместимость с другими библиотеками для обработки данных. Синтаксис
Параметры: Возвращает Вызывает
Для работы этой функции должны быть установлены и pyarrow, и pandas. Установите их командой: pip install pyarrow pandas
ПредупреждениеПри пустом результате возвращается пустая таблица PyArrow без схемы.
Примеры

chdb.state.sqlitelike.to_df

Преобразует результат запроса в DataFrame Pandas. Эта функция преобразует результаты запросов chdb в DataFrame Pandas: сначала в таблицу PyArrow, а затем в DataFrame. Это обеспечивает удобные возможности для анализа данных через API 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 включает:
  • Подключения: Управление подключениями к базе данных с помощью строк подключения
  • Курсоры: Выполнение запросов и получение результатов
  • Система типов: Константы типов и конвертеры, совместимые с DB-API 2.0
  • Обработка ошибок: Стандартная иерархия исключений базы данных
  • Потокобезопасность: Уровень потокобезопасности 1 (потоки могут совместно использовать модули, но не подключения)

Основные функции

Интерфейс Database API (DBAPI) 2.0 включает следующие основные функции:

chdb.dbapi.connect

Инициализирует новое соединение с базой данных. Синтаксис
Параметры Вызывает

chdb.dbapi.get_client_info()

Возвращает сведения о версии клиента. Возвращает версию клиента chDB в виде строки для совместимости с MySQLdb. Синтаксис
Возвращает

Конструкторы типов

chdb.dbapi.Binary(x)

Возвращает x в виде двоичного типа. Эта функция преобразует входное значение в тип bytes для использования в двоичных полях базы данных в соответствии со спецификацией DB-API 2.0. Синтаксис
Параметры Возвращает

Класс соединения

class chdb.dbapi.connections.Connection(path=None)

Базовый класс: object Подключение к базе данных chDB, совместимое с DB-API 2.0. Этот класс предоставляет стандартный интерфейс DB-API для подключения к базам данных chDB и работы с ними. Поддерживаются как базы данных в памяти, так и файловые базы данных. Подключение управляет базовым движком chDB и предоставляет методы для выполнения запросов, управления транзакциями (для ClickHouse это no-op) и создания курсоров.
Параметры Переменные Примеры
ClickHouse не поддерживает традиционные транзакции, поэтому операции commit() и rollback() ничего не делают, но предусмотрены для соответствия DB-API.

close

Закрывает соединение с базой данных. Закрывает базовое соединение chDB и помечает его как закрытое. Последующие операции с этим соединением будут вызывать ошибку. Синтаксис
Исключения

commit

Фиксирует текущую транзакцию. Синтаксис
Для chDB/ClickHouse это операция-заглушка, так как они не поддерживают традиционные транзакции. Предусмотрено для соблюдения требований DB-API 2.0.

cursor

Создает новый курсор для выполнения запросов. Синтаксис
Параметры Возвращает Вызывает Пример

escape

Экранирование значения для безопасного включения в SQL-запросы. Синтаксис
Параметры Возвращаемое значение Пример

escape_string

Экранирует строковое значение для SQL-запросов. Синтаксис
Параметры Возвращает

свойство open

Проверяет, открыто ли соединение. Возвращает

query

Выполняет SQL-запрос напрямую и возвращает необработанные результаты. Этот метод обходит интерфейс курсора и выполняет запросы напрямую. Для стандартного использования DB-API рекомендуется использовать метод cursor(). Синтаксис
Параметры: Возвращает Вызывает исключения Пример

свойство resp

Возвращает ответ на последний запрос. Возвращает
Это свойство обновляется при каждом прямом вызове query(). Оно не отражает запросы, выполненные через курсоры.

rollback

Откатывает текущую транзакцию. Синтаксис
Для 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().
Примеры
См. объекты Cursor в DB-API 2.0 для получения подробной информации о спецификации.

callproc

Выполняет хранимую процедуру (временная реализация-заглушка). Синтаксис
Параметры Возвращает
chDB/ClickHouse не поддерживает хранимые процедуры в традиционном понимании. Этот метод предоставлен для соответствия DB-API 2.0, но фактически не выполняет никаких действий. Для всех SQL-операций используйте execute().
СовместимостьЭто реализация-заглушка. Традиционные возможности хранимых процедур, такие как параметры OUT/INOUT, несколько результирующих наборов и серверные переменные, не поддерживаются лежащим в основе движком ClickHouse.

close

Закрывает курсор и освобождает связанные с ним ресурсы. После закрытия курсор становится непригодным для дальнейшего использования, и любая операция с ним сгенерирует исключение. При закрытии курсора считываются все оставшиеся данные и освобождается базовый курсор. Синтаксис

execute

Выполняет SQL-запрос с необязательной привязкой параметров. Этот метод выполняет один SQL-оператор с необязательной подстановкой параметров. Поддерживает несколько стилей плейсхолдеров параметров для большей гибкости. Синтаксис
Параметры Возвращаемое значение Стили параметров Примеры
Вызывает исключения

executemany(query, args)

Выполняет запрос несколько раз с разными наборами параметров. Этот метод позволяет эффективно выполнять один и тот же SQL-запрос несколько раз с разными значениями параметров. Он особенно полезен при массовой вставке данных. Синтаксис
Параметры Возвращает Примеры
Этот метод повышает производительность операций INSERT и UPDATE сразу для нескольких строк за счёт оптимизации процесса выполнения запроса.

fetchall()

Получает все оставшиеся строки из результата запроса. Синтаксис
Возвращает Вызывает
ПредупреждениеЭтот метод может потреблять много памяти при больших результирующих наборах. Для больших датасетов рекомендуется использовать fetchmany().
Пример

fetchmany

Возвращает несколько строк из результата запроса. Синтаксис
Параметры Возвращает Вызывает Пример

fetchone

Возвращает следующую строку из результата запроса. Синтаксис
Возвращает Исключения Пример

max_stmt_length = 1024000

Максимальный размер оператора, создаваемого executemany(). Значение по умолчанию — 1024000.

mogrify

Возвращает точную строку запроса, которая будет отправлена в базу данных. Этот метод показывает итоговый SQL-запрос после подстановки параметров, что полезно для отладки и логирования. Синтаксис
Параметры Возвращает Пример
Этот метод реализован в соответствии с расширением DB-API 2.0, используемым в Psycopg.

nextset

Переход к следующему результирующему набору (не поддерживается). Синтаксис
Возвращает
chDB/ClickHouse не поддерживает несколько результирующих наборов для одного запроса. Этот метод предусмотрен для соответствия DB-API 2.0, но всегда возвращает None.

setinputsizes

Устанавливает размеры входных данных для параметров (реализация-заглушка). Синтаксис
Параметры
Этот метод ничего не делает, но требуется спецификацией DB-API 2.0. chDB автоматически обрабатывает размеры параметров на внутреннем уровне.

setoutputsizes

Установить размеры выходных столбцов (реализация-заглушка). Синтаксис
Параметры
Этот метод ничего не делает, но обязателен по спецификации DB-API 2.0. chDB автоматически обрабатывает размер выходных данных на своей стороне.

Классы ошибок

Классы исключений для операций с базой данных chdb. Этот модуль предоставляет полную иерархию классов исключений для обработки ошибок, связанных с базой данных, в chdb в соответствии со спецификацией Python Database API v2.0. Иерархия исключений устроена следующим образом:
Каждый класс исключений представляет отдельную категорию ошибок базы данных:
Эти классы исключений соответствуют спецификации Python DB API 2.0 и обеспечивают единообразную обработку ошибок в различных операциях с базой данных.
См. также
  • Python Database API Specification v2.0
  • chdb.dbapi.connections - Управление подключениями к базе данных
  • chdb.dbapi.cursors - Операции с курсорами базы данных
Примеры

exception chdb.dbapi.err.DataError

Наследуется от: DatabaseError Исключение, возникающее при ошибках, связанных с обрабатываемыми данными. Это исключение возникает, когда операции с базой данных завершаются с ошибкой из-за проблем с обрабатываемыми данными, таких как:
  • Деление на ноль
  • Числовые значения вне допустимого диапазона
  • Недопустимые значения даты/времени
  • Ошибки усечения строк
  • Ошибки преобразования типов
  • Недопустимый формат данных для данного типа столбца
Вызывает Примеры

исключение 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
  • Нарушения ссылочной целостности
Вызывает Примеры

исключение chdb.dbapi.err.InterfaceError

Базовый класс: Error Исключение, возникающее при ошибках, связанных с интерфейсом базы данных, а не с самой базой данных. Это исключение возникает при проблемах в реализации интерфейса базы данных, например:
  • Недопустимые параметры соединения
  • Неправильное использование API (вызов методов у закрытых соединений)
  • Ошибки протокола на уровне интерфейса
  • Сбои при импорте или инициализации модуля
Возникает
Эти ошибки обычно вызваны ошибками в коде или проблемами конфигурации и могут быть устранены исправлением клиентского кода или конфигурации.

исключение chdb.dbapi.err.InternalError

Базовый класс: DatabaseError Исключение, возникающее, когда база данных сталкивается с внутренней ошибкой. Это исключение возникает, когда система базы данных сталкивается с внутренними ошибками, не вызванными приложением, например:
  • Недопустимое состояние курсора (курсор больше не является действительным)
  • Несогласованность состояния транзакции (транзакция не синхронизирована)
  • Проблемы, связанные с повреждением базы данных
  • Повреждение внутренних структур данных
  • Ошибки базы данных на уровне системы
Вызывает
ПредупреждениеВнутренние ошибки могут указывать на серьёзные проблемы с базой данных, требующие внимания администратора базы данных. Эти ошибки, как правило, нельзя устранить с помощью логики повторных попыток на уровне приложения.
Эти ошибки, как правило, находятся вне контроля приложения и могут потребовать перезапуска базы данных или операций восстановления.

исключение chdb.dbapi.err.NotSupportedError

Базовый класс: DatabaseError Исключение, возникающее, когда метод или API базы данных не поддерживается. Это исключение возникает, когда приложение пытается использовать возможности базы данных или методы API, которые не поддерживаются текущей конфигурацией или версией базы данных, например:
  • Вызов rollback() для соединений без поддержки транзакций
  • Использование расширенных возможностей SQL, не поддерживаемых версией базы данных
  • Вызов методов, не реализованных текущим драйвером
  • Попытка использовать отключённые возможности базы данных
Вызывает Примеры
Чтобы избежать этих ошибок, ознакомьтесь с документацией по базе данных и возможностями драйвера. По возможности предусмотрите корректный переход на резервные варианты.

исключение chdb.dbapi.err.OperationalError

Базовый класс: DatabaseError Исключение, возникающее при ошибках, связанных с работой базы данных. Это исключение возникает при ошибках, происходящих во время работы базы данных и не обязательно зависящих от программиста, включая:
  • Неожиданное отключение от базы данных
  • Сервер базы данных не найден или недоступен
  • Сбои при обработке транзакций
  • Ошибки выделения памяти во время обработки
  • Нехватка места на диске или исчерпание ресурсов
  • Внутренние ошибки сервера базы данных
  • Сбои аутентификации или авторизации
Вызывает
Эти ошибки обычно носят временный характер и могут быть устранены повторной попыткой выполнить операцию или устранением проблем на уровне системы.
ПредупреждениеНекоторые ошибки при выполнении операций могут указывать на серьёзные проблемы системы, требующие вмешательства администратора.

исключение chdb.dbapi.err.ProgrammingError

Базовый класс: DatabaseError Исключение, возникающее при ошибках программирования в операциях с базой данных. Это исключение возникает, когда в работе приложения с базой данных допущены ошибки программирования, в том числе:
  • Таблица или столбец не найдены
  • Таблица или индекс уже существуют при создании
  • Синтаксические ошибки SQL в операторах
  • Указано неверное количество параметров в подготовленных операторах
  • Недопустимые SQL-операции (например, DROP для несуществующих объектов)
  • Некорректное использование методов API базы данных
Вызывает Примеры

исключение chdb.dbapi.err.StandardError

Базовый класс: Exception Исключение, связанное с работой chdb. Это базовый класс для всех исключений, связанных с chdb. Он наследуется от встроенного класса Python Exception и служит корневым классом в иерархии исключений для операций с базой данных.
Этот класс исключений соответствует спецификации Python DB API 2.0 для обработки исключений баз данных.

исключение chdb.dbapi.err.Warning

Базовый класс: 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, представляющим целочисленный литерал в заданной системе счисления. Литерал может предваряться символом ‘+’ или ‘-’ и содержать пробельные символы по краям. По умолчанию base равен 10. Допустимые значения base: 0 и 2–36. Base 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 — это отдельное значение типа. Примеры
Примеры использования Пример базового запроса:
Работа с данными:
Управление соединениями:
Рекомендации
  1. Управление соединениями: Всегда закрывайте соединения и курсоры по завершении работы
  2. Контекстные менеджеры: Используйте операторы with для автоматического освобождения ресурсов
  3. Обработка батчами: Используйте fetchmany() для больших результирующих наборов
  4. Обработка ошибок: Оборачивайте операции с базой данных в блоки try-except
  5. Привязка параметров: По возможности используйте параметризованные запросы
  6. Управление памятью: Избегайте fetchall() для очень больших наборов данных
  • Интерфейс DB-API 2.0 в chDB совместим с большинством Python-инструментов для работы с базами данных
  • Интерфейс обеспечивает потокобезопасность уровня 1 (потоки могут совместно использовать модули, но не соединения)
  • Строки подключения поддерживают те же параметры, что и сеансы chDB
  • Поддерживаются все стандартные исключения DB-API 2.0
Предупреждение
  • Всегда закрывайте курсоры и соединения, чтобы избежать утечек ресурсов
  • Большие результирующие наборы следует обрабатывать батчами
  • Синтаксис привязки параметров соответствует стилю format: %s

Пользовательские функции (UDF)

Модуль пользовательских функций для chDB. Этот модуль предоставляет средства для создания пользовательских функций (UDF) и управления ими в chDB. Он позволяет расширять возможности chDB, создавая собственные функции на Python, которые можно вызывать из SQL-запросов.

chdb.udf.chdb_udf

Декоратор для Python UDF (пользовательская функция) в chDB. Синтаксис
Параметры Примечания
  1. Функция должна быть без сохранения состояния. Поддерживаются только UDF, а не UDAF.
  2. Возвращаемый тип по умолчанию — String. Он должен быть одним из типов данных ClickHouse.
  3. Функция должна принимать аргументы типа String. Все аргументы являются строками.
  4. Функция будет вызываться для каждой строки входных данных.
  5. Функция должна быть чистой функцией Python. Импортируйте все модули, используемые в самой функции.
  6. Используется тот же интерпретатор Python, что и для запуска скрипта.
Пример

chdb.udf.generate_udf

Генерирует файлы конфигурации UDF и исполняемого скрипта. Эта функция создает необходимые файлы для пользовательской функции (UDF) в chDB:
  1. Исполняемый Python-скрипт для обработки входных данных
  2. XML-файл конфигурации, который регистрирует UDF в ClickHouse
Синтаксис
Параметры
Эта функция обычно вызывается декоратором @chdb_udf, и её не следует вызывать напрямую.

Утилиты

Служебные функции и вспомогательные средства для chDB. Этот модуль содержит различные утилиты для работы с chDB, включая вывод типов, средства преобразования данных и инструменты отладки.

chdb.utils.convert_to_columnar

Преобразует список словарей в столбцовый формат. Эта функция принимает список словарей и преобразует его в словарь, где каждый ключ соответствует столбцу, а каждое значение — это список значений столбца. Отсутствующие значения в словарях обозначаются как None. Синтаксис
Параметры Возвращает Пример

chdb.utils.flatten_dict

Преобразует вложенный словарь в плоский. Эта функция принимает вложенный словарь и преобразует его в плоский, объединяя вложенные ключи с помощью разделителя. Списки словарей сериализуются в JSON-строки. Синтаксис
Параметры Возвращает Пример

chdb.utils.infer_data_type

Определяет наиболее подходящий тип данных для списка значений. Эта функция анализирует список значений и определяет наиболее подходящий тип данных, который может представлять все значения в списке. Она учитывает целочисленные, беззнаковые целочисленные, десятичные типы и типы с плавающей точкой и по умолчанию использует «string», если значения не могут быть представлены ни одним числовым типом или если все значения — None. Синтаксис
Параметры Возвращаемое значение
  • Если все значения в списке — None, функция возвращает “string”.
  • Если хотя бы одно значение в списке является строкой, функция сразу возвращает “string”.
  • Функция предполагает, что числовые значения могут быть представлены как целые числа, десятичные числа или числа с плавающей точкой в зависимости от их диапазона и точности.

chdb.utils.infer_data_types

Определяет типы данных для каждого столбца в столбцовой структуре данных. Эта функция анализирует значения в каждом столбце и определяет наиболее подходящий тип данных для каждого столбца на основе выборки данных. Синтаксис
Параметры Возвращает

Абстрактные базовые классы

class chdb.rwabc.PyReader(data: Any)`

Базовый класс: ABC

abstractmethod read

Считывает указанное количество строк из заданных столбцов и возвращает список объектов, где каждый объект содержит последовательность значений одного столбца.
Параметры Возвращаемое значение

class chdb.rwabc.PyWriter

Базовый класс: ABC

abstractmethod finalize

Формирует и возвращает итоговые данные из блоков. Метод должен быть реализован в подклассах.
Возвращает

abstractmethod write

Записывает столбцы данных в блоки. Должен быть реализован в подклассах.
Параметры

Обработка исключений

class chdb.ChdbError

Базовый класс: Exception Базовый класс исключений для ошибок, связанных с chDB. Это исключение возникает, когда выполнение запроса chDB завершается неудачно или приводит к ошибке. Оно наследуется от стандартного класса Python Exception и содержит сведения об ошибке из базового движка ClickHouse. Сообщение исключения обычно содержит подробную информацию об ошибке из ClickHouse, включая синтаксические ошибки, несоответствия типов, отсутствие таблиц/столбцов и другие проблемы при выполнении запроса. Переменные Примеры
Это исключение автоматически генерируется функцией 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’.
Последнее изменение 19 июня 2026 г.