Справочник по Python API
Основные функции запросов
chdb.query
Выполнить SQL-запрос с использованием движка chDB.
Это основная функция запроса, которая выполняет SQL-операторы с использованием встроенного движка ClickHouse. Поддерживает различные форматы вывода и может работать с базами данных в памяти или на файловой основе.
Синтаксис
Параметры
Параметр | Тип | По умолчанию | Описание |
---|---|---|---|
sql | str | обязательный | Строка SQL-запроса для выполнения |
output_format | str | "CSV" | Формат вывода для результатов. Поддерживаемые форматы: • "CSV" - Значения, разделенные запятыми• "JSON" - Формат JSON• "Arrow" - Формат Apache Arrow• "Parquet" - Формат Parquet• "DataFrame" - Pandas DataFrame• "ArrowTable" - Таблица PyArrow• "Debug" - Включить детализированное логирование |
path | str | "" | Путь к файлу базы данных. По умолчанию используется база данных в памяти. Может быть путем к файлу или ":memory:" для базы данных в памяти |
udf_path | str | "" | Путь к директории пользовательских функций |
Возвращает
Возвращает результат запроса в указанном формате:
Тип возврата | Условие |
---|---|
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. Поддерживает различные форматы вывода и может работать с базами данных в памяти или на файловой основе.
Синтаксис
Параметры
Параметр | Тип | По умолчанию | Описание |
---|---|---|---|
sql | str | обязательный | Строка SQL-запроса для выполнения |
output_format | str | "CSV" | Формат вывода для результатов. Поддерживаемые форматы: • "CSV" - Значения, разделенные запятыми• "JSON" - Формат JSON• "Arrow" - Формат Apache Arrow• "Parquet" - Формат Parquet• "DataFrame" - Pandas DataFrame• "ArrowTable" - Таблица PyArrow• "Debug" - Включить детализированное логирование |
path | str | "" | Путь к файлу базы данных. По умолчанию используется база данных в памяти. Может быть путем к файлу или ":memory:" для базы данных в памяти |
udf_path | str | "" | Путь к директории пользовательских функций |
Возвращает
Возвращает результат запроса в указанном формате:
Тип возврата | Условие |
---|---|
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.
Преобразует результат запроса chDB в таблицу PyArrow для эффективной обработки данных в столбцах. Возвращает пустую таблицу, если результат пуст.
Синтаксис
Параметры
Параметр | Описание |
---|---|
res | объект результата запроса chDB, содержащий бинарные данные Arrow |
Возвращает
Тип возврата | Описание |
---|---|
pa.Table | Таблица PyArrow, содержащая результаты запроса |
Вызывает
Тип ошибки | Описание |
---|---|
ImportError | Если pyarrow или pandas не установлены |
Пример
chdb.to_df
Преобразовать результат запроса в pandas DataFrame.
Преобразует результат запроса chDB в pandas DataFrame, сначала преобразуя в таблицу PyArrow, а затем в 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
Базовый класс: Exception
Базовый класс исключений для ошибок, связанных с chDB.
Это исключение вызывается, когда выполнение запроса chDB завершается неудачей или происходит ошибка. Он наследует от стандартного класса исключений Python и предоставляет информацию об ошибке из движка ClickHouse.
class chdb.session.Session
Базовый класс: object
Сессия будет сохранять состояние запроса. Если путь равен None, будет создан временный каталог, который будет использоваться в качестве пути к базе данных, и временный каталог будет удален, когда сессия будет закрыта. Вы также можете указать путь, чтобы создать базу данных в этом пути, где будут храниться ваши данные.
Вы также можете использовать строку соединения, чтобы передать путь и другие параметры.
Примеры
Строка соединения | Описание |
---|---|
":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" | Абсолютный путь с параметрами |
Строки соединения, содержащие параметры запроса, такие как “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-запрос к базе данных сессии и возвращает результаты в указанном формате. Метод поддерживает различные форматы вывода и поддерживает состояние сессии между запросами.
Синтаксис
Параметры
Параметр | Тип | По умолчанию | Описание |
---|---|---|---|
sql | str | обязательный | Строка SQL-запроса для выполнения |
fmt | str | "CSV" | Формат вывода для результатов. Доступные форматы: • "CSV" - Значения, разделенные запятыми• "JSON" - Формат JSON• "TabSeparated" - Значения, разделенные табуляцией• "Pretty" - Формат таблицы с красивым выводом• "JSONCompact" - Компактный формат JSON• "Arrow" - Формат Apache Arrow• "Parquet" - Формат Parquet |
udf_path | str | "" | Путь к пользовательским функциям. Если не указан, используется путь UDF из инициализации сессии |
Возвращает
Возвращает результаты запроса в указанном формате. Точный тип возврата зависит от параметра формата:
- Строковые форматы (CSV, JSON и др.) возвращают str
- Бинарные форматы (Arrow, Parquet) возвращают bytes
Вызывает
Исключение | Условие |
---|---|
RuntimeError | Если сессия закрыта или недействительна |
ValueError | Если SQL-запрос имеет неверный формат |
Формат “Debug” не поддерживается и будет автоматически преобразован в “CSV” с предупреждением. Для отладки используйте параметры строки соединения вместо этого.
Этот метод выполняет запрос синхронно и загружает все результаты в
память. Для больших наборов результатов рассмотрите возможность использования send_query()
для
потоковой передачи результатов.
Примеры
Смотрите также
send_query()
- Для потокового выполнения запросовsql
- Псевдоним для этого метода
send_query
Выполнить SQL-запрос и вернуть итератор потокового результата.
Этот метод выполняет SQL-запрос к базе данных сессии и возвращает объект потокового результата, который позволяет вам перебирать результаты, не загружая их все в память сразу. Это особенно полезно для больших наборов результатов.
Синтаксис
Параметры
Параметр | Тип | По умолчанию | Описание |
---|---|---|---|
sql | str | обязательный | Строка SQL-запроса для выполнения |
fmt | str | "CSV" | Формат вывода для результатов. Доступные форматы: • "CSV" - Значения, разделенные запятыми• "JSON" - Формат JSON• "TabSeparated" - Значения, разделенные табуляцией• "JSONCompact" - Компактный формат JSON• "Arrow" - Формат Apache Arrow• "Parquet" - Формат Parquet |
Возвращает
Тип возврата | Описание |
---|---|
StreamingResult | Итератор потокового результата, который последовательно выдает результаты запроса. Итератор можно использовать в циклах for или преобразовывать в другие структуры данных |
Вызывает
Исключение | Условие |
---|---|
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 из инициализации сессии |
Возвращает
Возвращает результаты запроса в указанном формате. Точный тип возврата зависит от параметра формата:
- Строковые форматы (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 (байты)• "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, который позволяет итеративно обрабатывать результаты без загрузки всего набора результатов в память сразу. Это идеально подходит для обработки больших наборов данных.
Синтаксис
Параметры
Параметр | Тип | По умолчанию | Описание |
---|---|---|---|
query | str | обязательный | Строка SQL-запроса для выполнения |
format | str | "CSV" | Формат вывода для результатов. Поддерживаемые форматы: • "CSV" - Значения, разделенные запятыми• "JSON" - Формат JSON• "Arrow" - Формат Apache Arrow (включает метод record_batch())• "dataframe" - Части DataFrame Pandas• "arrowtable" - Части таблицы PyArrow |
Возвращает
Тип возвращаемого значения | Описание |
---|---|
StreamingResult | Итератор потоковых результатов для запросов, который поддерживает: • Протокол итераторов (for циклы) • Протокол менеджера контекста (with операторы) • Ручное извлечение с помощью метода fetch() • Потоковая передача PyArrow RecordBatch (только формат Arrow) |
Вызывает
Исключение | Условие |
---|---|
RuntimeError | Если выполнение запроса завершилось неуспешно |
ImportError | Если необходимые пакеты для формата не установлены |
Только формат “Arrow” поддерживает метод record_batch()
на возвращенном StreamingResult.
Примеры
Смотрите также
query()
- Для не потокового выполнения запросов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 обычно автоматически фиксирует операции, поэтому явные фиксации обычно не нужны. Этот метод предоставлен для совместимости со стандартным рабочим процессом 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, который предоставляет эффективный доступ к колонным данным и совместимость с другими библиотеками обработки данных.
Синтаксис
Параметры:
Параметр | Тип | Описание |
---|---|---|
res | - | Объект результата запроса от chdb, содержащий данные в формате Arrow |
Возвращает
Тип возвращаемого значения | Описание |
---|---|
pyarrow.Table | Таблица PyArrow, содержащая результаты запроса |
Вызывает
Исключение | Условие |
---|---|
ImportError | Если пакеты pyarrow или pandas не установлены |
Эта функция требует, чтобы pyarrow и pandas были установлены. Установите их с помощью: pip install pyarrow pandas
Пустые результаты возвращают пустую таблицу PyArrow без схемы.
Примеры
chdb.state.sqlitelike.to_df
Конвертировать результат запроса в Pandas DataFrame.
Эта функция конвертирует результаты запроса chdb в формат Pandas DataFrame, сначала конвертируя в таблицу PyArrow, а затем в DataFrame. Это предоставляет удобные возможности для анализа данных с API Pandas.
Синтаксис
Параметры:
Параметр | Тип | Описание |
---|---|---|
r | - | Объект результата запроса от chdb, содержащий данные в формате Arrow |
Возвращает:
Тип возвращаемого значения | Описание |
---|---|
pandas.DataFrame | DataFrame, содержащий результаты запроса с соответствующими именами колонок и типами данных |
Вызывает
Исключение | Условие |
---|---|
ImportError | Если пакеты pyarrow или pandas не установлены |
Эта функция использует многопоточность для конвертации Arrow в Pandas для повышения производительности на больших наборах данных.
Смотрите также
to_arrowTable()
- Для конвертации в формат таблицы PyArrow
Примеры
Интеграция DataFrame
class chdb.dataframe.Table
Основы:
Интерфейс API баз данных (DBAPI) 2.0
chDB предоставляет совместимый с Python интерфейс DB-API 2.0 для подключения к базе данных, позволяя использовать chDB с инструментами и фреймворками, которые ожидают стандартные интерфейсы базы данных.
Интерфейс DB-API 2.0 chDB включает:
- Соединения: Управление подключением к базе данных с помощью строк подключения
- Курсоры: Выполнение запросов и получение результатов
- Система типов: Константы и конвертеры типов, совместимые с DB-API 2.0
- Обработка ошибок: Стандартная иерархия исключений базы данных
- Безопасность потоков: Уровень 1 безопасности потоков (потоки могут совместно использовать модули, но не соединения)
Основные функции
Интерфейс 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 | Входные данные, конвертированные в bytes |
Класс соединения
class chdb.dbapi.connections.Connection(path=None)
Основы: object
Соединение, соответствующее DB-API 2.0, с базой данных chDB.
Этот класс предоставляет стандартный интерфейс DB-API для подключения и взаимодействия с базами данных chDB. Он поддерживает как базы данных в памяти, так и основанные на файлах.
Соединение управляет движком chDB и предоставляет методы для выполнения запросов, управления транзакциями (нет операций для ClickHouse) и создания курсоров.
Параметры
Параметр | Тип | По умолчанию | Описание |
---|---|---|---|
path | str | None | Путь к файлу базы данных. Если None, используется база данных в памяти. Может быть путь к файлу, например 'database.db', или None для ':memory:' |
Переменные
Переменная | Тип | Описание |
---|---|---|
encoding | str | Кодировка символов для запросов, по умолчанию 'utf8' |
open | bool | True, если соединение открыто, False, если закрыто |
Примеры
ClickHouse не поддерживает традиционные транзакции, поэтому операции commit() и rollback() не выполняют никаких действий, но предоставлены для соблюдения спецификации DB-API.
close
Закрыть соединение с базой данных.
Закрывает внутреннее соединение chDB и помечает это соединение как закрытое. Последующие операции с этим соединением приведут к возникновению ошибки.
Синтаксис
Вызывает
Исключение | Условие |
---|---|
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
Получить последний ответ запроса.
Возвращает
Тип возвращаемого значения | Описание |
---|---|
- | Необработанный ответ от последнего вызова query() |
Это свойство обновляется каждый раз, когда прямой вызов query(). Оно не отражает запросы, выполненные через курсоры.
rollback
Отменить текущую транзакцию.
Синтаксис
Это не выполняет никаких действий для chDB/ClickHouse, так как он не поддерживает традиционные транзакции. Предоставлено для соблюдения спецификации DB-API 2.0.
Класс курсора
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 | - | ID последней вставленной строки (если применимо) |
max_stmt_length | int | Максимальный размер оператора для executemany() (по умолчанию: 1024000) |
Примеры
Смотрите DB-API 2.0 Cursor Objects для полного описания спецификации.
callproc
Выполните хранимую процедуру (реализация-заглушка).
Синтаксис
Параметры
Параметр | Тип | Описание |
---|---|---|
procname | str | Имя хранимой процедуры для выполнения |
args | последовательность | Параметры для передачи в процедуру |
Возвращает
Тип возвращаемого значения | Описание |
---|---|
sequence | Оригинальный параметр args (без изменений) |
chDB/ClickHouse не поддерживает хранимые процедуры в традиционном понимании. Этот метод предоставлен для совместимости с DB-API 2.0, но не выполняет никаких реальных операций. Используйте execute() для всех SQL-операций.
Это реализация-заглушка. Традиционные функции хранимых процедур, такие как параметры OUT/INOUT, многократные наборы результатов и переменные сервера, не поддерживаются движком ClickHouse.
close
Закройте курсор и освободите связанные ресурсы.
После закрытия курсор становится непригодным для использования, и любая операция вызовет исключение. Закрытие курсора исчерпывает все оставшиеся данные и освобождает underlying cursor.
Синтаксис
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-запрос несколько раз с различными значениями параметров. Это особенно полезно для массовых операций вставки.
Синтаксис
Параметры
Параметр | Тип | Описание |
---|---|---|
query | str | SQL-запрос для многократного выполнения |
args | последовательность | Последовательность кортежей/словарей/списков параметров для каждого выполнения |
Возвращаемое значение
Тип возвращаемого значения | Описание |
---|---|
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, в соответствии со Спецификацией API баз данных Python версии 2.0.
Иерархия исключений структурирована следующим образом:
Каждый класс исключения представляет собой определенную категорию ошибок, связанных с базой данных:
Исключение | Описание |
---|---|
Warning | Ненасильственные предупреждения во время операций с базой данных |
InterfaceError | Проблемы с самим интерфейсом базы данных |
DatabaseError | Базовый класс для всех ошибок, связанных с базой данных |
DataError | Проблемы с обработкой данных (недопустимые значения, ошибки типов) |
OperationalError | Операционные проблемы базы данных (соединение, ресурсы) |
IntegrityError | Нарушения ограничений (внешние ключи, уникальность) |
InternalError | Внутренние ошибки базы данных и повреждения |
ProgrammingError | Ошибки синтаксиса SQL и неправильное использование API |
NotSupportedError | Неподдерживаемые функции или операции |
Эти классы исключений соответствуют спецификации Python DB API 2.0 и обеспечивают последовательную обработку ошибок в различных операциях с базой данных.
Смотрите также
- Спецификация API базы данных Python версии 2.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
Исключение, которое является базовым классом для всех остальных исключений ошибок (не предупреждений).
Это базовый класс для всех исключений ошибок в chdb, за исключением предупреждений. Он служит родительским классом для всех условий ошибок базы данных, которые мешают успешному завершению операций.
Эта иерархия исключений соответствует спецификации Python DB API 2.0.
Смотрите также
Warning
- Для ненасильственных предупреждений, которые не мешают завершению операции
исключение chdb.dbapi.err.IntegrityError
Базируется на: DatabaseError
Исключение, вызываемое, когда нарушается реляционная целостность базы данных.
Это исключение вызывается, когда операции с базой данных нарушают ограничения целостности, включая:
- Нарушения ограничений внешнего ключа
- Нарушения ограничений первичного ключа или уникальности (дублирующие ключи)
- Нарушения ограничений проверки
- Нарушения ограничений NOT NULL
- Нарушения целостности ссылок
Вызывает
Исключение | Условие |
---|---|
IntegrityError | Когда нарушаются ограничения целостности базы данных |
Примеры
исключение chdb.dbapi.err.InterfaceError
Базируется на: Error
Исключение, вызываемое для ошибок, связанных с интерфейсом базы данных, а не с самой базой данных.
Это исключение вызывается, когда возникают проблемы с реализацией интерфейса базы данных, такие как:
- Неверные параметры подключения
- Неправильное использование API (вызов методов на закрытых соединениях)
- Ошибки протокола на уровне интерфейса
- Ошибки импорта или инициализации модуля
Вызывает
Исключение | Условие |
---|---|
InterfaceError | Когда интерфейс базы данных сталкивается с ошибками, не связанными с операциями базы данных |
Эти ошибки, как правило, являются ошибками программирования или конфигурации, которые можно решить, исправив клиентский код или конфигурацию.
исключение chdb.dbapi.err.InternalError
Базируется на: DatabaseError
Исключение, возникающее, когда база данных сталкивается с внутренней ошибкой.
Это исключение вызывается, когда система базы данных сталкивается с внутренними ошибками, которые не вызваны приложением, такими как:
- Неверное состояние курсора (курсоры больше не действительны)
- Неконсистентности состояния транзакции (транзакция не синхронизирована)
- Проблемы с повреждением базы данных
- Повреждение внутренних структур данных
- Ошибки базы данных на уровне системы
Вызывает
Исключение | Условие |
---|---|
InternalError | Когда база данных сталкивается с внутренними несоответствиями |
Внутренние ошибки могут указывать на серьезные проблемы с базой данных, требующие внимания администратора базы данных. Эти ошибки, как правило, не восстановимы с помощью логики повторной попытки на уровне приложения.
Эти ошибки, как правило, выходят за рамки контроля приложения и могут потребовать перезапуска базы данных или операций восстановления.
исключение chdb.dbapi.err.NotSupportedError
Базируется на: DatabaseError
Исключение, вызываемое, когда метод или API базы данных не поддерживается.
Это исключение вызывается, когда приложение пытается использовать функции базы данных или методы API, которые не поддерживаются текущей конфигурацией или версией базы данных, такие как:
- Запрос
rollback()
на соединениях без поддержки транзакций - Использование расширенных функций SQL, не поддерживаемых версией базы данных
- Вызов методов, не реализованных текущим драйвером
- Попытка использовать отключенные функции базы данных
Вызывает
Исключение | Условие |
---|---|
NotSupportedError | Когда обращаются к неподдерживаемым функциям базы данных |
Примеры
Проверьте документацию базы данных и возможности драйвера, чтобы избежать этих ошибок. Рассмотрите возможности плавного возврата, где это возможно.
исключение chdb.dbapi.err.OperationalError
Базируется на: DatabaseError
Исключение, возникающее для ошибок, связанных с работой базы данных.
Это исключение вызывается для ошибок, которые происходят во время работы базы данных и не обязательно находятся под контролем программиста, включая:
- Неожиданное отключение от базы данных
- Сервер базы данных не найден или недоступен
- Ошибки обработки транзакций
- Ошибки выделения памяти во время обработки
- Израсходование дискового пространства или ресурсов
- Внутренние ошибки сервера базы данных
- Ошибки аутентификации или авторизации
Вызывает
Исключение | Условие |
---|---|
OperationalError | Когда операции базы данных завершаются ошибкой из-за операционных проблем |
Эти ошибки, как правило, временные и могут быть устранены повторной попыткой операции или устранением проблем на уровне системы.
Некоторые операционные ошибки могут указывать на серьезные проблемы в системе, требующие административного вмешательства.
исключение chdb.dbapi.err.ProgrammingError
Базируется на: DatabaseError
Исключение, вызываемое для ошибок программирования в операциях с базой данных.
Это исключение вызывается, когда в использовании базы данных приложением возникают ошибки программирования, включая:
- Таблица или колонка не найдена
- Таблица или индекс уже существуют при создании
- Ошибки синтаксиса SQL в выражениях
- Неверное количество параметров, указанных в подготовленных выражениях
- Неверные операции SQL (например, DROP на несуществующих объектах)
- Неправильное использование методов API базы данных
Вызывает
Исключение | Условие |
---|---|
ProgrammingError | Когда SQL-запросы или использование API содержат ошибки |
Примеры
исключение chdb.dbapi.err.StandardError
Базируется на: Exception
Исключение, связанное с операцией с chdb.
Это базовый класс для всех исключений, связанных с chdb. Он наследуется от встроенного класса Exception Python и служит корнем иерархии исключений для операций с базой данных.
Этот класс исключений соответствует спецификации Python DB API 2.0 для обработки исключений баз данных.
исключение chdb.dbapi.err.Warning
Базируется на: StandardError
Исключение, вызываемое для важных предупреждений, таких как обрезка данных во время вставки и т. д.
Это исключение вызывается, когда операция базы данных завершается, но с важными предупреждениями, на которые следует обратить внимание приложению. Распространенные сценарии включают:
- Обрезка данных во время вставки
- Потеря точности в числовых преобразованиях
- Предупреждения о преобразовании кодировок
Это соответствует спецификации Python DB API 2.0 для предупреждающих исключений.
Константы модуля
chdb.dbapi.apilevel = '2.0'
Создает новый объект строки из указанного объекта. Если указаны кодировка или ошибки, то объект должен иметь буфер данных, который будет декодирован с использованием заданной кодировки и обработчика ошибок. В противном случае возвращает результат object.__str__()
(если определен) или repr(object)
.
- кодировка по умолчанию 'utf-8'.
- ошибки по умолчанию 'строгие'.
chdb.dbapi.threadsafety = 1
Преобразует число или строку в целое число или возвращает 0, если не указаны аргументы. Если x — число, возвращает x.int(). Для чисел с плавающей запятой это усечет в сторону нуля.
Если x не является числом или если указана основа, то x должен быть строкой, байтами или экземпляром bytearray, представляющим целочисленный литерал в заданной основе. Литерал может быть предшествован символами '+' или '-' и окружен пробелами. Основание по умолчанию — 10. Допустимые основания: 0 и 2-36. Основание 0 означает интерпретацию базы из строки как целочисленного литерала.
chdb.dbapi.paramstyle = 'format'
Создает новый объект строки из указанного объекта. Если указаны кодировка или ошибки, то объект должен иметь буфер данных, который будет декодирован с использованием заданной кодировки и обработчика ошибок. В противном случае возвращает результат object.str() (если определен) или repr(object). кодировка по умолчанию 'utf-8'. ошибки по умолчанию 'строгие'.
Константы типов
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 (Пользовательская Определенная Функция).
Синтаксис
Параметры
Параметр | Тип | По умолчанию | Описание |
---|---|---|---|
return_type | str | "String" | Тип возвращаемого значения функции. Должен быть одним из типов данных ClickHouse |
Заметки
- Функция должна быть статeless. Поддерживаются только UDF, не UDAF.
- Тип возвращаемого значения по умолчанию — строка. Тип возвращаемого значения должен быть одним из типов данных ClickHouse.
- Функция должна принимать аргументы типа строка. Все аргументы являются строками.
- Функция будет вызвана для каждой строки входных данных.
- Функция должна быть чистой функцией Python. Импортируйте все модули, используемые В ФУНКЦИИ.
- Используемый интерпретатор Python такой же, как и тот, который использовался для запуска скрипта.
Пример
chdb.udf.generate_udf
Сгенерировать конфигурацию UDF и исполняемые файлы скриптов.
Эта функция создает необходимые файлы для Пользовательской Определенной Функции (UDF) в chDB:
- Исполняемый Python-скрипт, который обрабатывает входные данные
- XML-файл конфигурации, который регистрирует UDF с ClickHouse
Синтаксис
Параметры
Параметр | Тип | Описание |
---|---|---|
func_name | str | Имя функции UDF |
args | list | Список имен аргументов для функции |
return_type | str | Тип возвращаемого значения ClickHouse для функции |
udf_body | str | Тело исходного кода Python функции UDF |
Эта функция обычно вызывается декоратором @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
Выводит наиболее подходящий тип данных для списка значений.
Эта функция анализирует список значений и определяет наиболее подходящий тип данных, который может представить все значения в списке. Она учитывает целые, беззнаковые целые, десятичные и плавающие типы, и по умолчанию возвращает “строку”, если значения не могут быть представлены любым числовым типом или если все значения равны None.
Синтаксис
Параметры
Параметр | Тип | Описание |
---|---|---|
values | List[Any] | Список значений для анализа. Значения могут быть любого типа |
Возврат
Тип возврата | Описание |
---|---|
str | Строка, представляющая выведенный тип данных. Возможные возвращаемые значения: ”int8”, “int16”, “int32”, “int64”, “int128”, “int256”, “uint8”, “uint16”, “uint32”, “uint64”, “uint128”, “uint256”, “decimal128”, “decimal256”, “float32”, “float64”, или “строка”. |
- Если все значения в списке равны None, функция возвращает “строка”.
- Если любое значение в списке является строкой, функция немедленно возвращает “строка”.
- Функция предполагает, что числовые значения могут быть представлены как целые, десятичные или плавающие на основе их диапазона и точности.
chdb.utils.infer_data_types
Выводит типы данных для каждой колонки в столбцовой структуре данных.
Эта функция анализирует значения в каждой колонке и выводит наиболее подходящий тип данных для каждой колонки на основе выборки данных.
Синтаксис
Параметры
Параметр | Тип | По умолчанию | Описание |
---|---|---|---|
column_data | Dict[str, List[Any]] | обязательный | Словарь, где ключи — это имена колонок, а значения — списки значений колонок |
n_rows | int | 10000 | Количество строк для выборки при выводе типов данных |
Возврат
Тип возврата | Описание |
---|---|
List[tuple] | Список кортежей, каждый из которых содержит имя колонки и её выведенный тип данных |
Abstract Base Classes
class chdb.rwabc.PyReader
(data: Any)`
Bases: ABC
abstractmethod read
Читает заданное количество строк из указанных колонок и возвращает список объектов, где каждый объект является последовательностью значений для колонки.
Параметры
Параметр | Тип | Описание |
---|---|---|
col_names | List[str] | Список имен колонок для чтения |
count | int | Максимальное количество строк для чтения |
Возврат
Тип возврата | Описание |
---|---|
List[Any] | Список последовательностей, по одной для каждой колонки |
class chdb.rwabc.PyWriter
Bases: ABC
abstractmethod finalize
Собирает и возвращает окончательные данные из блоков. Должен быть реализован подклассами.
Возврат
Тип возврата | Описание |
---|---|
bytes | Окончательные сериализованные данные |
abstractmethod write
Сохраняет колонки данных в блоки. Должен быть реализован подклассами.
Параметры
Параметр | Тип | Описание |
---|---|---|
col_names | List[str] | Список имен колонок, которые записываются |
columns | List[List[Any]] | Список данных колонок, каждая колонка представлена списком |
Exception Handling
class chdb.ChdbError
Bases: Exception
Базовый класс исключений для ошибок, связанных с chDB.
Это исключение вызывается, когда выполнение запроса chDB не удаётся или возникает ошибка. Оно наследуется от стандартного класса исключений Python и предоставляет информацию об ошибке из движка ClickHouse.
Сообщение об исключении обычно содержит подробную информацию об ошибке из ClickHouse, включая синтаксические ошибки, несоответствия типов, отсутствующие таблицы/колонки и другие проблемы выполнения запросов.
Переменные
Переменная | Тип | Описание |
---|---|---|
args | - | Кортеж, содержащий сообщение об ошибке и любые дополнительные аргументы |
Примеры
Это исключение автоматически вызывается chdb.query() и связанными функциями, когда движок ClickHouse сообщает об ошибке. Вы должны перехватывать это исключение при обработке потенциально неудачных запросов, чтобы обеспечить соответствующую обработку ошибок в вашем приложении.
Version Information
chdb.chdb_version = ('3', '6', '0')
Встроенная неизменяемая последовательность.
Если аргумент не указан, конструктор возвращает пустой кортеж. Если указано итерируемое значение, то кортеж инициализируется значениями из этого итерируемого значения.
Если аргумент является кортежем, возвращаемое значение будет таким же объектом.
chdb.engine_version = '25.5.2.1'
Создаёт новый объект строки из данного объекта. Если указан кодек или ошибки, то объект должен поддерживать буфер данных, который будет декодироваться с использованием указанного кодека и обработчика ошибок. В противном случае возвращается результат object._str_() (если он определён) или repr(object).
- кодек по умолчанию ‘utf-8’.
- обработка ошибок по умолчанию ‘строгая’.
chdb.__version__ = '3.6.0'
Создаёт новый объект строки из данного объекта. Если указан кодек или ошибки, то объект должен поддерживать буфер данных, который будет декодироваться с использованием указанного кодека и обработчика ошибок. В противном случае возвращается результат object._str_() (если он определён) или repr(object).
- кодек по умолчанию ‘utf-8’.
- обработка ошибок по умолчанию ‘строгая’.