Основные функции для запросов
chdb.query
Возвращает
Возвращает результат запроса в указанном формате:
Вызывает
Примеры
chdb.sql
Возвращает
Возвращает результат запроса в указанном формате:
Вызывает
Примеры
chdb.to_arrowTable
Возвращаемое значение
Исключения
Пример
chdb.to_df
Возвращаемое значение
Исключения
Пример
Управление соединениями и сеансами
chdb.connect
Базовые форматы
С параметрами запроса
Обработка параметров запроса
Параметры запроса передаются в движок 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¶m2=value2”, передают
“param1=value1” движку ClickHouse в качестве аргументов запуска.Подробнее см.
clickhouse local –help –verboseОбработка некоторых специальных аргументов:- “mode=ro” будет преобразован в “–readonly=1” для ClickHouse (режим только для чтения)
cleanup
Этот метод никогда не сгенерирует исключение, поэтому его можно безопасно вызывать в
блоках finally или в деструкторах.
close()- Для явного закрытия сеанса с пробросом ошибок
close
Этот метод автоматически вызывается, когда сеанс используется в качестве менеджера контекста
или когда объект сеанса уничтожается.
query
Возвращает
Возвращает результаты запроса в указанном формате.
Точный возвращаемый тип зависит от параметра
fmt:
- Строковые форматы (CSV, JSON и т. д.) возвращают str
- Двоичный формат (Arrow, Parquet) возвращает bytes
Формат «Debug» не поддерживается и будет автоматически преобразован
в «CSV» с предупреждением.
Для отладки используйте параметры строки подключения.
send_query()— Для потокового выполнения запросовsql— Псевдоним этого метода
send_query
Возвращает
Вызывает исключения
Формат «Debug» не поддерживается и будет автоматически преобразован
в «CSV» с предупреждением. Для отладки используйте параметры строки подключения.
query()— для выполнения запросов без использования стримингаchdb.state.sqlitelike.StreamingResult— итератор результатов стриминга
sql
Возвращает
Возвращает результаты запроса в указанном формате.
Точный тип возвращаемого значения зависит от параметра формата:
- Строковые форматы (CSV, JSON и т. д.) возвращают str
- Двоичные форматы (Arrow, Parquet) возвращают bytes
Формат “Debug” не поддерживается и будет автоматически преобразован
в “CSV” с предупреждением. Для отладки используйте параметры строки подключения
вместо него.
send_query()— Для выполнения запросов в потоковом режимеsql— Псевдоним этого метода
Управление состоянием
chdb.state.connect
Базовые форматы
Поддерживаемые форматы строки подключения:
С параметрами запроса
Обработка параметров запроса
Параметры запроса передаются движку ClickHouse как аргументы запуска.
Специальная обработка параметров:
Полный список параметров см. в
clickhouse local --help --verbose
Возвращает
Выбрасывает исключения
Примеры
Connection— класс подключения к базе данныхCursor— курсор базы данных для операций DB-API 2.0
class chdb.state.sqlitelike.Connection
object
Синтаксис
close
Этот метод идемпотентен — его можно безопасно вызывать несколько раз.
cursor
При создании нового курсора любой существующий курсор,
связанный с этим подключением, будет заменён. Для одного подключения поддерживается только один курсор.
Cursor— Реализация курсора для работы с базой данных
query
Возвращает
Вызывает исключения
Примеры
send_query()— Для выполнения запросов в потоковом режиме
send_query
Возвращает
Вызывает
Только формат «Arrow» поддерживает метод
record_batch() у возвращаемого StreamingResult.query()— для выполнения запросов без стримингаStreamingResult— итератор для потоковых результатов
class chdb.state.sqlitelike.StreamingResult
object
Итератор потоковых результатов для обработки больших результатов запросов.
Этот класс предоставляет интерфейс итератора для потоковой обработки результатов запросов без
загрузки всего результирующего набора в память. Он поддерживает различные выходные форматы
и предоставляет методы для ручного получения результатов и потоковой передачи батчей PyArrow RecordBatch.
fetch
Примеры
cancel
close
cancel(). Закрывает итератор потокового результата
и освобождает все связанные с ним ресурсы.
Синтаксис
record_batch
Возвращаемое значение
Этот метод доступен только в том случае, если потоковый запрос был
инициирован с
format="Arrow". При использовании с другими форматами будет вызвана ошибка.Протокол итерации
Протокол контекстного менеджера
класс chdb.state.sqlitelike.Cursor
object
close
Этот метод идемпотентен — его можно безопасно вызывать несколько раз.
При закрытии соединения курсор также закрывается автоматически.
column_names
Примеры
column_types()— Получить информацию о типах столбцовdescription— описание столбца в DB-API 2.0
column_types
Примеры
column_names()— получить информацию об именах столбцовdescription— описание столбцов в DB-API 2.0
commit
В ClickHouse операции обычно фиксируются автоматически, поэтому явная фиксация
обычно не требуется. Этот метод предусмотрен для совместимости
со стандартным сценарием работы DB-API 2.0.
свойство description : list
Это соответствует спецификации DB-API 2.0 для cursor.description.
Только первые два элемента (name и type_code) содержат значимые
данные в данной реализации.
column_names()— Получить только имена столбцовcolumn_types()— Получить только типы столбцов
execute
Исключения
Этот метод соответствует спецификации 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
Примеры
fetchone()- Выборка одной строкиfetchmany()- Выборка нескольких строк батчами
fetchmany
Возвращает
Этот метод соответствует спецификации DB-API 2.0. Он вернет меньше
чем ‘size’ строк, если результирующий набор исчерпан.
fetchone()— Получить одну строкуfetchall()— Получить все оставшиеся строки
fetchone
Этот метод соответствует спецификации DB-API 2.0. Значения столбцов
автоматически преобразуются в соответствующие типы Python в зависимости от
типов столбцов ClickHouse.
fetchmany()- Получить несколько строкfetchall()- Получить все оставшиеся строки
chdb.state.sqlitelike
Возвращает
Вызывает
Для работы этой функции должны быть установлены и pyarrow, и pandas.
Установите их командой:
pip install pyarrow pandaschdb.state.sqlitelike.to_df
Возвращает:
Вызывает
Эта функция использует многопоточность при преобразовании из Arrow в Pandas,
чтобы повысить производительность на больших объёмах данных.
to_arrowTable()- Для преобразования в формат таблицы PyArrow
Интеграция с DataFrame
class chdb.dataframe.Table
Интерфейс Database API (DBAPI) 2.0
- Подключения: Управление подключениями к базе данных с помощью строк подключения
- Курсоры: Выполнение запросов и получение результатов
- Система типов: Константы типов и конвертеры, совместимые с DB-API 2.0
- Обработка ошибок: Стандартная иерархия исключений базы данных
- Потокобезопасность: Уровень потокобезопасности 1 (потоки могут совместно использовать модули, но не подключения)
Основные функции
chdb.dbapi.connect
Вызывает
chdb.dbapi.get_client_info()
Конструкторы типов
chdb.dbapi.Binary(x)
Возвращает
Класс соединения
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
commit
Для chDB/ClickHouse это операция-заглушка, так как они не поддерживают
традиционные транзакции. Предусмотрено для соблюдения требований DB-API 2.0.
cursor
Возвращает
Вызывает
Пример
escape
Возвращаемое значение
Пример
escape_string
Возвращает
свойство open
query
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().
close
execute
Возвращаемое значение
Стили параметров
Примеры
executemany(query, args)
Возвращает
Примеры
Этот метод повышает производительность операций INSERT и UPDATE сразу для нескольких строк
за счёт оптимизации процесса выполнения запроса.
fetchall()
Вызывает
Пример
fetchmany
Возвращает
Вызывает
Пример
fetchone
Исключения
Пример
max_stmt_length = 1024000
executemany().
Значение по умолчанию — 1024000.
mogrify
Возвращает
Пример
Этот метод реализован в соответствии с расширением 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 автоматически обрабатывает размер выходных данных на своей стороне.
Классы ошибок
Эти классы исключений соответствуют спецификации 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'
object._\_str_\_() (если он определен)
или repr(object).
- значение encoding по умолчанию — ‘utf-8’.
- значение errors по умолчанию — ‘strict’.
chdb.dbapi.threadsafety = 1
chdb.dbapi.paramstyle = 'format'
Константы типов
chdb.dbapi.STRING = frozenset({247, 253, 254})
chdb.dbapi.BINARY = frozenset({249, 250, 251, 252})
chdb.dbapi.NUMBER = frozenset({0, 1, 3, 4, 5, 8, 9, 13})
chdb.dbapi.DATE = frozenset({10, 14})
chdb.dbapi.TIME = frozenset({11})
chdb.dbapi.TIMESTAMP = frozenset({7, 12})
chdb.dbapi.DATETIME = frozenset({7, 12})
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
Пользовательские функции (UDF)
chdb.udf.chdb_udf
Примечания
- Функция должна быть без сохранения состояния. Поддерживаются только UDF, а не UDAF.
- Возвращаемый тип по умолчанию — String. Он должен быть одним из типов данных ClickHouse.
- Функция должна принимать аргументы типа String. Все аргументы являются строками.
- Функция будет вызываться для каждой строки входных данных.
- Функция должна быть чистой функцией Python. Импортируйте все модули, используемые в самой функции.
- Используется тот же интерпретатор Python, что и для запуска скрипта.
chdb.udf.generate_udf
- Исполняемый Python-скрипт для обработки входных данных
- XML-файл конфигурации, который регистрирует UDF в ClickHouse
Эта функция обычно вызывается декоратором @chdb_udf, и её не следует
вызывать напрямую.
Утилиты
chdb.utils.convert_to_columnar
Возвращает
Пример
chdb.utils.flatten_dict
Возвращает
Пример
chdb.utils.infer_data_type
Возвращаемое значение
- Если все значения в списке — 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 по умолчанию — ‘utf-8’.
- errors по умолчанию — ‘strict’.
chdb.__version__ = '3.6.0'
- encoding по умолчанию — ‘utf-8’.
- errors по умолчанию — ‘strict’.