データ型
Tsurugi Python DB-API データ型¶
Tsurugi Python DB-API(tsurugi-dbpai)で使用できるデータ型について説明します。
データ型の対応表¶
| Tsurugiの型 | Pythonの型 | type_code |
|---|---|---|
| BOOLEAN | bool | Bool |
| INT | int | Int32 |
| BIGINT | int | Int64 |
| REAL | float | Float32 |
| DOUBLE | float | Float64 |
| DECIMAL | decimal.Decimal | Decimal |
| CHAR, VARCHAR | str | Str |
| BINARY, VARBINARY | bytes | Bytes |
| BLOB | bytes | Blob |
| CLOB | str | Clob |
| DATE | datetime.date | Date |
| TIME | datetime.time(tzinfoなし) | Time |
| TIMESTAMP | datetime.datetime(tzinfoなし) | Datetime |
| TIME WITH TIME ZONE | datetime.time(tzinfoあり) | OffsetTime |
| TIMESTAMP WITH TIME ZONE | datetime.datetime(tzinfoあり) | OffsetDatetime |
- selectの実行結果は、この表のPythonの型で返ります。
execute,executemanyメソッドのパラメーターとしてPythonの型の値が使用されたとき、Tsurugiのプレースホルダーの型としては、intはBIGINT, floatはDOUBLE, bytesはBINARY, strはCHARとして扱われます。
type_code¶
type_codeは、テーブル定義(Connectionの get_table_metadata メソッドで取得できる)のカラム情報やselectの実行結果のカラム情報(Cursorの description 属性で取得できる)で取得できる値です。
また、Tsurugi Python DB-APIではtype_codeと同名のラッパークラスを用意しています。
ラッパークラスは、パラメーター付きの execute やexecutemany メソッドを呼ぶ際に、パラメーターの厳密な型を指定するために利用できます。
TIME, TIMESTAMPの小数秒精度¶
TsurugiのTIMEやTIMESTAMPはナノ秒(9桁)まで保持できますが、Pythonのtimeやdatetimeはマイクロ秒(6桁)までしか保持できません。
selectの実行結果として返るtimeやdatetimeでは、マイクロ秒より下の桁は切り捨てられます。
execute, executemany メソッドのパラメーターでtimeやdatetimeを使用する場合も、マイクロ秒までしか指定できません。
ラッパークラスを使うと、ナノ秒まで指定することができます。
import tsurugi_dbapi as tsurugi
import datetime
# 2026-02-06 12:34:56.123456789
value = tsurugi.type_code.Datetime(datetime.datetime(2026, 2, 6, 12, 34, 56), 123456789)
value = tsurugi.type_code.Datetime.of(2026, 2, 6, 12, 34, 56, 123456789)