Skip to content

データ型

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と同名のラッパークラスを用意しています。
ラッパークラスは、パラメーター付きの executeexecutemany メソッドを呼ぶ際に、パラメーターの厳密な型を指定するために利用できます。

Note

ラッパークラスの一覧は APIドキュメントのtype_code を参照してください。

ラッパークラスの利用例は usage_ja.md を参照してください。

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)