主要なクエリ関数
chdb.query
戻り値
指定したフォーマットでクエリ結果を返します。
例外
例
chdb.sql
戻り値
指定したフォーマットでクエリ結果を返します。
送出される例外
例
chdb.to_arrowTable
戻り値
送出される例外
例
chdb.to_df
戻り値
送出される例外
例
接続とセッション管理
chdb.connect
基本的なフォーマット
クエリパラメータ付き
クエリパラメータの処理
クエリパラメータは起動引数として ClickHouse engine に渡されます。
特殊なパラメータの処理:
完全なパラメータ一覧については、
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 やその他のパラメータを渡すこともできます。
接続文字列の引数処理“file:test.db?param1=value1¶m2=value2” のようにクエリパラメータを含む接続文字列では、
“param1=value1” は起動引数として ClickHouse engine に渡されます。詳細については、
clickhouse local –help –verbose を参照してください。特殊な引数の処理の例:- “mode=ro” は clickhouse では “–readonly=1” になります (読み取り専用モード)
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
戻り値
指定したフォーマットでクエリ結果を返します。
返り値の型は
fmt パラメータによって異なります。
- 文字列フォーマット (CSV、JSON など) の場合は str を返します
- バイナリ形式 (Arrow、Parquet) の場合は bytes を返します
“Debug” フォーマットはサポートされておらず、警告とともに自動的に
“CSV” に変換されます。デバッグには、代わりに接続文字列パラメータを
使用してください。
send_query()- クエリをストリーミング実行する場合sql- このメソッドの別名
状態管理
chdb.state.connect
基本フォーマット
サポートされている接続文字列のフォーマット:
クエリパラメータ付き
クエリパラメータの処理
クエリパラメータは、起動引数として ClickHouse engine に渡されます。
特別なパラメータは次のように処理されます。
完全なパラメータ一覧については、
clickhouse local --help --verbose を参照してください
戻り値
送出される例外
例
Connection- データベース接続のクラスCursor- DB-API 2.0 の操作用データベースカーソル
class chdb.state.sqlitelike.Connection
object
構文
close
このメソッドは冪等であり、複数回呼び出しても安全です。
cursor
新しいカーソルを作成すると、この接続に関連付けられた既存のカーソルは
置き換えられます。1 つの接続でサポートされるカーソルは 1 つだけです。
Cursor- データベースカーソルの実装
query
戻り値
送出される例外
例
send_query()- クエリをストリーミング実行する場合
send_query
戻り値
送出される例外
返される StreamingResult で
record_batch() メソッドをサポートするのは、“Arrow” フォーマットのみです。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 のワークフロー
との互換性のために用意されています。
property description : list
これは cursor.description に関する DB-API 2.0 仕様に従っています。
この実装では、最初の 2 つの要素 (name と type_code) のみが
有効なデータを含みます。
column_names()- カラム名だけを取得column_types()- カラムの型だけを取得
execute
fetch メソッドを使って結果を取得できるように準備します。結果データのパースと、ClickHouseのデータ型に対する自動的な型変換を行います。
構文
送出される例外
このメソッドは、
cursor.execute() に関する DB-API 2.0 の仕様に従います。
実行後は、fetchone()、fetchmany()、または fetchall() を使用して
結果を取得してください。このメソッドは、ClickHouse のデータ型を適切な
Python 型に自動的に変換します。
- Int/UInt 型 → int
- Float 型 → float
- String/FixedString → str
- DateTime → datetime.datetime
- Date → datetime.date
- Bool → bool
fetchone()- 1行を取得fetchmany()- 複数行を取得fetchall()- 残りのすべての行を取得
fetchall
例
fetchone()- 1 行を取得fetchmany()- 複数の行をまとめて取得
fetchmany
size 行を取得します。各行には、適切に Python 型へ変換されたカラム値が含まれ、行タプルのタプルとして返されます。
構文
戻り値
このメソッドは DB-API 2.0 の仕様に従っています。結果セットが尽きている場合は、
‘size’ より少ない行数を返します。
fetchone()- 1行を取得fetchall()- 残りのすべての行を取得
fetchone
このメソッドは DB-API 2.0 の仕様に従います。カラム値は、
ClickHouse のカラム型に基づいて適切な Python 型に自動的に
変換されます。
fetchmany()- 複数の行を取得しますfetchall()- 残りのすべての行を取得します
chdb.state.sqlitelike
戻り値
発生する例外
この関数を使用するには、pyarrow と pandas の両方がインストールされている必要があります。
次のコマンドでインストールします:
pip install pyarrow pandaschdb.state.sqlitelike.to_df
戻り値:
送出される例外
この関数は、大規模なデータセットでのパフォーマンス向上のため、Arrow から Pandas への変換にマルチスレッド処理を使用します。
to_arrowTable()- PyArrow Tableフォーマットへの変換
DataFrame連携
class chdb.dataframe.Table
Database API (DBAPI) 2.0 インターフェイス
- Connections: 接続文字列を使用したデータベース接続の管理
- Cursors: クエリの実行と結果の取得
- Type System: DB-API 2.0 準拠の型定数とコンバータ
- Error Handling: 標準のデータベース例外階層
- Thread Safety: レベル 1 のスレッドセーフティ (スレッドはモジュールを共有できますが、接続は共有できません)
主要な関数
chdb.dbapi.connect
送出される例外
chdb.dbapi.get_client_info()
型コンストラクタ
chdb.dbapi.Binary(x)
戻り値
Connection クラス
class chdb.dbapi.connections.Connection(path=None)
object
chDB データベースへの DB-API 2.0 準拠の接続。
このクラスは、chDB データベースに接続して操作するための標準的な DB-API インターフェイスを提供します。インメモリデータベースとファイルベースのデータベースの両方をサポートしています。
この接続は基盤となる chDB engine を管理し、
クエリの実行、transaction の管理 (ClickHouse では no-op) 、およびカーソルの作成のためのメソッドを提供します。
変数
例
ClickHouse は従来のトランザクションをサポートしていないため、commit() と rollback()
は実質的に no-op ですが、DB-API 準拠のために用意されています。
close
commit
これは chDB/ClickHouse では no-op です。従来の
トランザクションをサポートしていないためです。DB-API 2.0 準拠のために提供されています。
cursor
戻り値
発生する例外
例
escape
戻り値
例
escape_string
戻り値
property open
query
戻り値
発生する例外
例
property resp
このプロパティは、query() が直接呼び出されるたびに更新されます。
カーソル経由で実行されたクエリは反映されません。
rollback
これは、従来のトランザクションをサポートしていない chDB/ClickHouse では no-op です。
DB-API 2.0 準拠のために提供されています。
Cursor クラス
class chdb.dbapi.cursors.Cursor
object
クエリの実行と結果の取得を行うための DB-API 2.0 カーソルです。
このカーソルは、SQL ステートメントの実行、クエリ結果の管理、
および結果セット内の移動に使用するメソッドを提供します。パラメータのバインドや一括操作をサポートし、
DB-API 2.0 の仕様に準拠しています。
Cursor インスタンスを直接作成しないでください。代わりに Connection.cursor() を使用してください。
例
仕様の詳細については、DB-API 2.0 Cursor Objects
を参照してください。
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
戻り値
例
このメソッドは、Psycopg で使われている DB-API 2.0 の拡張に準拠しています。
nextset
chDB/ClickHouse は、1 つのクエリから複数の結果セットを返すことをサポートしていません。
このメソッドは 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
データベースの関係整合性が損なわれた場合に送出される例外です。
この例外は、データベース操作が整合性制約に違反した場合に送出されます。
これには、次のようなケースが含まれます。
- 外部キー制約違反
- 主キーまたは UNIQUE 制約違反 (重複キー)
- 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
挿入時のデータ切り捨てなど、重要な警告に対して送出される例外です。
この例外は、database 操作自体は完了したものの、
アプリケーション側で注意すべき重要な警告がある場合に送出されます。
一般的な例としては、次のようなものがあります。
- 挿入時のデータ切り捨て
- 数値変換時の精度低下
- 文字セット変換に関する警告
これは、警告例外に関する 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})
field_type == STRING のような比較を行えるようにします。
例
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})
frozenset です。
このクラスは、DB-API 2.0 の型比較のセマンティクスをサポートするために frozenset を拡張したものです。
これにより、個々の項目を等価演算子と不等価演算子の両方で Set と比較できる、柔軟な型チェックが可能になります。
これは STRING、BINARY、NUMBER などの型定数で使われ、
field_type が単一の型の値である場合に、“field_type == STRING” のような
比較を行えるようにします。
例
chdb.dbapi.TIME = frozenset({11})
chdb.dbapi.TIMESTAMP = frozenset({7, 12})
chdb.dbapi.DATETIME = frozenset({7, 12})
chdb.dbapi.ROWID = frozenset({})
- 接続管理: 使用後は必ず接続とカーソルを閉じる
- コンテキストマネージャー: 自動クリーンアップには
with文を使用する - バッチ処理: 大量の結果セットには
fetchmany()を使用する - エラー処理: データベース操作は try-except ブロックで囲む
- パラメータバインディング: 可能な場合はパラメータ化されたクエリを使用する
- メモリ管理: 非常に大きなデータセットでは
fetchall()を避ける
- chDB の DB-API 2.0 インターフェイスは、ほとんどの Python データベースツールと互換性があります
- このインターフェイスはレベル 1 のスレッドセーフティを備えています (スレッドはモジュールを共有できますが、接続は共有できません)
- 接続文字列は chDB セッションと同じパラメータをサポートします
- 標準の DB-API 2.0 例外をすべてサポートしています
ユーザー定義関数 (UDF)
chdb.udf.chdb_udf
注意
- 関数はステートレスである必要があります。サポートされるのは UDF のみで、UDAF はサポートされません。
- デフォルトの戻り値の型は String です。戻り値の型は ClickHouse のデータ型のいずれかである必要があります。
- 関数は String 型の引数を受け取る必要があります。すべての引数は文字列です。
- 関数は入力の各行に対して呼び出されます。
- 関数は pure Python の関数である必要があります。関数内で使用するすべてのモジュールをインポートしてください。
- 使用される Python インタープリタは、スクリプトの実行に使用されるものと同じです。
chdb.udf.generate_udf
- 入力データを処理する Python の実行可能スクリプト
- UDF を ClickHouse に登録する XML 設定ファイル
この関数は通常 @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 engine からのエラー情報を提供します。
通常、この例外メッセージには、構文エラー、型の不一致、存在しない
table やカラム、その他のクエリ実行に関する問題など、
ClickHouse から返される詳細なエラー情報が含まれます。
変数
例
この例外は、基盤となる ClickHouseエンジンがエラーを報告した際に、chdb.query() および関連
関数によって自動的に送出されます。
失敗する可能性のある
クエリを処理する際は、アプリケーションで適切なエラー処理を行えるよう、
この例外を捕捉する必要があります。
バージョン情報
chdb.chdb_version = ('3', '6', '0')
chdb.engine_version = '25.5.2.1'
- encoding のデフォルトは ‘utf-8’ です。
- errors のデフォルトは ‘strict’ です。
chdb.__version__ = '3.6.0'
- encoding のデフォルトは ‘utf-8’ です。
- errors のデフォルトは ‘strict’ です。