doquedb.client package

Submodules

doquedb.client.connection module

connection.py – クライアントコネクション

class doquedb.client.connection.Connection(datasource: DataSource, port: Port)

Bases: Object

クライアントコネクションクラス.

サーバとのコネクションを管理する. サーバ側にはこのクライアントコネクション1つごとにスレッドが存在している.

begin_connection() Connection

新しいコネクションを得る.

Returns:

新しいコネクション

Return type:

Connection

begin_worker() Port

ワーカを起動する.

Returns:

接続ポート

Return type:

Port

Raises:

UnexpectedError – データソースから持ってきたポートが開放されていなかった場合

Notes

ポートプールにポートがない場合、slaveID=ANYとしてDoqueDBから返ってくるポートを使用する.

cancel_worker(worker_id: int) None

ワーカをキャンセルする.

Parameters:

worker_id (int) – キャンセルするワーカのID

close() None

クローズする.

Notes

このメソッドは例外を送出しない.

disconnect_port(slave_id: List[IntegerData]) None

使用しない通信ポートを切断する.

Parameters:

slave_id (List[int]) – 切断するポートのスレーブIDのリスト

is_database_available() bool

任意のデータベースの利用可能性を得る.

Returns:

データベースが利用可能な場合はTrue , 利用不可能な場合はFalse

Return type:

bool

is_serever_available() bool

サーバの利用可能性を得る.

Returns:

サーバが利用可能な場合はTrue, 利用不可能な場合はFalse

Return type:

bool

doquedb.client.constants module

constants.py – 定数を管理するモジュール.

class doquedb.client.constants.ProtocolVersion(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: IntEnum

プロトコルバージョン管理用の列挙型クラス

CURRENT_PROTOCOL_VERSION = 4
PROTOCOL_VERSION1 = 0
PROTOCOL_VERSION2 = 1
PROTOCOL_VERSION3 = 2
PROTOCOL_VERSION4 = 3
PROTOCOL_VERSION5 = 4
class doquedb.client.constants.StatusSet(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: IntEnum

実行ステータス管理用の列挙型クラス

CANCELED = 4
DATA = 1
END_OF_DATA = 2
ERROR = 5
HAS_MORE_DATA = 7
META_DATA = 6
SUCCESS = 3
UNDEFINED = 0

doquedb.client.datasource module

datasource.py – クライアントのデータソース

class doquedb.client.datasource.DataSource(hostname: str, portnum: int)

Bases: Object

データソースクラス.

クライアント側のデータソースをあらわすクラス. 接続に必要な情報を保持する.

Parameters:
  • hostname (str) – 接続先のホスト名

  • portnum (int) – ポート番号

__connection_list

コネクションのリスト

Type:

list

__connection_element

最近返したコネクションの要素番号

Type:

int

__portmap

ポートのハッシュマップ(辞書)

Type:

dict

__expunge_port

クライアントが廃棄したポート

Type:

list

__hostname

接続先のホスト名

Type:

str

__portnumber

ポート番号

Type:

int

__protocol_ver

プロトコルバージョン

Type:

int

__sessionmap

セッションのハッシュマップ(辞書)

Type:

dict

__is_closed

クローズしたかどうか

Type:

bool

__masterID

マスターID(=プロトコルバージョン)

Type:

int

__authorization

認証方式

Type:

int

CHECK_CONNECTION_POOL_PERIOD = 60000
CONNECTION_THRESHOLD = 20
DATABASE_ALL = 4294967295
MAXIMUM_CONNECTION_POOL_COUNT = 100
TIME_UNIT = 500
property authorization: int

認証方式のゲッター.

close() None

データソースをクローズする.

create_session(dbname: str, username: str | None = None, password: str | None = None) Session

新しくセッションを作成する.

Parameters:
  • dbname (str) – データベース名

  • username (Optional[str]) – ユーザー名

  • password (Optional[str]) – パスワード

Raises:

UnexpectedError – クライアントコネクションが取得できなかった場合

expunge_port(port: Port) None

廃棄したポートを登録する.

Parameters:

port (Port) – 廃棄するポート

get_client_connection() Connection | None

コネクション管理クラスを得る.

ラウンドロビン方式でコネクション管理クラスを入手する.

Returns:

コネクション管理クラス

Return type:

Connection

is_database_available() bool

任意のデータベースの利用可能性を得る.

Returns:

データベースが利用可能な場合はTrue , 利用不可能な場合はFalse

Return type:

bool

is_server_available() bool

サーバの利用可能性を得る.

Returns:

サーバが利用可能な場合はTrue, 利用不可能な場合はFalse

Return type:

bool

property master_id: int

マスターIDのゲッター

new_client_connection() None

セッション数がCONNECTION_THRESHOLDを越えた場合に、 新しいクライアントコネクションを作成する.

new_port(slave_id: int) Port

新しいポートのインスタンスを得る

Parameters:

slave_id (int) – スレーブID

Returns:

新しいポートインスタンス

Return type:

Port

open(protocol_ver: int) None

データソースをオープンする.

Parameters:

protocol_ver (int) – プロトコルバージョン

pop_port() Port | None

ポートプールからポートを取り出す.

Returns:

ポートプールから受け取ったポート

Return type:

Port

push_port(port: Port) None

ポートプールにポートを挿入する.

Parameters:

port (Port) – ポート

remove_session(id: int) None

セッションを削除する.

session_exist() bool

セッションが存在しているかどうか

Returns:

存在している場合True, それ以外はFalse

Return type:

bool

shutdown(username: str | None = None, password: str | None = None) None

サーバを停止する.

doquedb.client.object module

object.py – doquedb.clientパッケージ共通の基底クラスの実装モジュール

class doquedb.client.object.Object(type)

Bases: ABC

clientオブジェクト全ての基底クラス

CONNECTION = 2
DATA_SOURCE = 0
PORT = 1
PREPARE_STATEMENT = 5
RESULT_SET = 4
SESSION = 3
abstract close() None

クローズする.

property type: int

typeのゲッター.

doquedb.client.port module

port.py – クライアントポート

class doquedb.client.port.Port(hostname: str, portnum: int, protocol_ver: int, slave_id: int)

Bases: Object

クライアントポートクラス.

Parameters:
  • hostname (str) – ホスト名

  • portnum (int) – ポート番号

  • protocol_ver (int) – プロトコルバージョン(=マスターID)

  • slave_id (int) – スレーブID

__connection (

obj: port.Connection): コネクション

__worker_id

ワーカのID

Type:

int

__reuse

エラー時に再利用可能かどうか

Type:

bool

property authorization: int

認証方式のゲッター.

close() None

ポートのクローズ.

port.Connectionのクローズ.

flush() None

出力をflushする.

property is_reuse: bool
property master_id: int

マスターIDのゲッター.

open() None

ポートのオープン.

port.Connectionのオープン.

read_integerdata() IntegerData

IntegerDataを読込む.

Returns:

読込んだIntegerData

Return type:

IntegerData

Raises:

OperationalError – 読込んだObjectがIntegerDataではなかった場合

read_object(data: Serializable | None = None) Serializable | None

オブジェクトを読み込む.

Parameters:

data (Serializable) – データを格納するSerializableクラス

Returns:

読み込んだオブジェクト

Return type:

Serializable

Raises:

DataBaseError – データベース側が例外を返してきた場合

read_status() int

Statusを読込む.

Returns:

読込んだStatusのタイプ

Return type:

int

Raises:

OperationalError – 読込んだObjectがStatusではなかった場合

read_stringdata() StringData

StringDataを読込む.

Returns:

読込んだStringData

Return type:

StringData

Raises:

OperationalError – 読込んだObjectがStringDataではなかった場合

reset()

再利用するためにリセットする.

property slave_id: int

スレーブIDのゲッター.

property worker_id: int

ワーカIDのゲッター

write_object(object_: Serializable | None = None) None

オブジェクトを書き出す.

Parameters:

object (Serializable) – 書き出すオブジェクト

doquedb.client.prepare_statement module

prepare_statement.py – クライアントのプリペアステートメント

class doquedb.client.prepare_statement.PrepareStatement(prepare_id: int)

Bases: Object

プリペアステートメントクラス

Parameters:

prepare_id – プリペアID

close(session: Session) None

プリペアステートメントのクローズ

static create(session: Session, statement: str) PrepareStatement

プリペアステートメントを作成する.

Parameters:
  • session (Session) – セッション

  • statement (str) – SQL文

Returns:

作成したプリペアステートメント

Return type:

PrepareStatement

execute(session: Session, parameter: DataArrayData | None = None) ResultSet

プリペアードステートメントの実行

Parameters:

parameter (Optional[DataArrayData]) – パラメータ

Returns:

リザルトセット

Return type:

ResultSet

property prepare_id: int

プリペアIDのゲッター

doquedb.client.resultset module

resultset.py – クライアントリザルトセット

class doquedb.client.resultset.ResultSet(datasource: DataSource, port: Port)

Bases: Object

リザルトセットクラス.

Parameters:
  • ( (port) – obj: DataSource): データソース

  • ( – obj: Port): 通信ポート

__datasource (

obj: DataSource): データソース

__port (

obj: Port): 通信ポート

__status

通信のステータス

__metadata (

obj: ResultSetMetaData): リザルトセットのメタデータ

__tupledata (

obj: DataArrayData): 一行のデータ

__status

現在のステータス

Type:

int

__row (

obj: DataArrayData): リザルトセットの現在の行データ

__rowcount

現在の行番号

Type:

int

__is_closed

クローズフラグ

Type:

bool

cancel() None

実行をキャンセルする.

close() None

リザルトセットのクローズ.

Notes

ゴミが残らないよう, 実行ステータスを得るまで結果を取得.

get_next_tuple(tuple_: DataArrayData | None = None) int

次のタプルデータを読む.

Parameters:

tuple (Optional[[DataArrayData]) – 読み込んだタプルデータ

Returns:

実行ステータス

Return type:

int

get_row_as_tuple() tuple | None

行データをリストに変換して取得する

get_status(skip_all: bool | None = True) int

実行ステータスを得る.

Parameters:

skipAll (bool) – True 複文の全ての結果を読み捨てる False 複文の1文の結果のみ読み捨てる

Notes

実行ステータスのみを返す。サーバからデータを受け取っても読み捨てる。

property is_closed: bool

`ResultSet`を閉じたかどうか

Type:

obj

property last_status: int

最後に取得した実行ステータスを得る

property metadata: ResultSetMetaData | None

メタデータのゲッター

next() bool

リザルトセットを1行読込み、カーソルを1行下に移動する.

Returns:

True 成功

False 失敗

Return type:

bool

Raises:

Notes

カーソルは初期状態では最初の行の前に位置する.呼び出しによって、最初の行が現在の行になる. 2 番目の呼び出しによって 2 行目が現在の行になり、以降同様に続く.

property row: DataArrayData | None

行データのゲッター

property rowcount: int

行データのゲッター

doquedb.client.session module

session.py – クライアントセッション

class doquedb.client.session.Session(datasource: DataSource, dbname: str, session_id: int, username: str | None = None)

Bases: Object

セッションクラス.

コネクションに対してセッションを作成する。

Parameters:
  • ( (datasource) – obj: DataSource): データソース

  • dbname (str) – データベース名

  • username (Optional[str]) – ユーザー名

  • session_id (int) – セッションID

__datasource (

obj: DataSource): データソース

__dbname

データベース名

Type:

str

__username

ユーザー名

Type:

str

__session_id

セッションID

Type:

int

close()

セッションのクローズ.

close_internal() int

クローズする.

Returns:

セッションID

Return type:

int

Notes

このメソッドは例外を送出しない.

close_prepare()

プリペアステートメントのクローズ

create_prepare_statement(statement: str) PrepareStatement

新しくプリペアステートメントを作成する.

Parameters:

statement (str) – SQL文

Raises:
  • ClassNotFound – 指定したIDを持つクラスがない

  • DatabaseError – DoqueDBから返却されたエラー

  • Exception – その他IOErrorなどpythonのシステムエラー

Returns:

新しく作成したプリペアステートメント

Return type:

PrepareStatement

property datasource: DataSource

データソースのゲッター

property dbname: str

データベース名のゲッター

erase_prepare_statement(prepare_id: int) None

プリペアステートメントを削除する

Parameters:

prepare_id (int) – プリペアステートメントID

Raises:
  • ClassNotFound – 指定したIDを持つクラスがない

  • DatabaseError – DoqueDBから返却されたエラー

  • Exception – その他IOErrorなどpythonのシステムエラー

execute(statement: str, parameters: DataArrayData | None = None) ResultSet

オペレーションを実行する.

Parameters:
  • operation (str) – 実行するSQL文.

  • param_sets (list) – SQL文に埋め込むパラメータのシーケンスのシーケンス.

Returns:

resultset

Raises:

Exception – IOErrorなどpythonのシステムエラー

execute_prepare(prepare: PrepareStatement, parameter: DataArrayData | None = None) ResultSet

プリペアしたSQL文を実行する.

Parameters:
Raises:

Exception – IOErrorなどpythonのシステムエラー

Returns:

リザルトセット

Return type:

ResultSet

get_database_product_ver() str

データベース製品のバージョンを取得する.

Returns:

データベースのバージョン

Return type:

str

property id_: int

セッションIDのゲッター

property is_valid: bool

セッションが有効かどうか

property prepared_map: Dict[str, PrepareStatement]

プリペアステートメントのマップのゲッター

property username: str | None

ユーザー名のゲッター

Module contents

client – クライアント機能パッケージ