Bluzelle-Pyは、Bluzelleデータベースサービスへのアクセスに使用できるPythonライブラリです。
Pythonライブラリはまだパッケージマネージャーに公開されていません。以下の指示に従うには、次の手順に従ってください。
$ # build the library
$ pip install " poetry==1.1.7 "
$ poetry config virtualenvs.create false
$ poetry install --no-interaction --no-ansi
$ pip install .PYPIパッケージに新しいリリース(新しいタグを使用)を展開するGitHubアクションがあります。 (https://pypi.orgのWebサイトからpypi_tokenを取得して、githubリポジトリの秘密に追加する必要があります。)
インスタンスをBluzelle TestNetに接続するには、次のことができます。
https://client.sentry.testnet.private.bluzelle.com:1317/mintにアクセスしてアカウントをMintします。これは、ニーモニックと住所を提供します。これにはしばらく時間がかかる場合があります。
https://client.sentry.testnet.private.bluzelle.com:1317/bank/balances/ {address}で残高を確認してください。アカウントの残高が0の場合、正のUBNTバランスが表示されるまで別のアカウントをミントします
次のオプションでSDKインスタンスを構成します。
from bluzelle . sdk . bluzelle import Bluzelle
sdk = Bluzelle (
mnemonic = "space dilemma domain payment snap crouch arrange"
" fantasy draft shaft fitness rain habit dynamic tip "
"faith mushroom please power kick impulse logic wet cricket" ,
host = "https://client.sentry.testnet.private.bluzelle.com" ,
port = 26657 ,
max_gas = 100000000 ,
gas_price = 0.002 ,
)注:指定された胃および/またはMAXGAが低すぎる場合、トランザクションはバリデーターによって拒否される可能性があります(たとえば、トランザクションは指定されたMAXGAよりも多くのガスを必要とするか、胃が低すぎて検証者料金をカバーできません)。上記のこれらのフィールドのデフォルトの提案で十分です。
注:ライブラリフォルダーで例を実行する場合は、ルートディレクトリ内のファイル内にコードを配置します
注:両方のバージョンについて、最初にSDKインスタンスを作成し、Asyncioループを使用してプログラムを実行します。詳細については、example.py.pyを参照してください。
SDKを構成すると、さまざまなモジュールと対応するメソッドにアクセスできます。
sdk.[module].[q or tx or field].[Method](**kwargs)
各メソッドは、単一のパラメーターをオブジェクト(つまりリクエスト)として使用し、オブジェクト(つまり応答)を返します。リクエストと応答の種類を確認するには、クエリとトランザクションについては、キュリウム/proto/[モジュール]を参照してください。
response = await sdk . db . q . Read (
QueryReadRequest (
uuid = uuid ,
key = "myKey" ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)
print ( reponse )*注:応答は、照会されたバイトエンコード値を表すUINT8ARRAYです。値の文字列表現を取得するには、新しいtextdecoder()。デコード(resp.value)を使用します
response = await sdk . bank . q . Balance (
QueryBalanceRequest (
address = sdk . wallet . address ,
denom = "ubnt" ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)
print ( response )SDKは、チェーンにトランザクションを送信することもできます。各モジュールには、さまざまなトランザクションメッセージを送信するTXメソッドがあります。
await sdk . db . tx . Create (
MsgCreate (
creator = sample_creator ,
uuid = uuid ,
key = "myKey" ,
value = "myValue" . encode ( "utf-8" ),
lease = Lease ( hours = 1 ),
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)*注:SDKは署名してトランザクションを送信しているため、署名者アドレスはトランザクションの作成者と一致する必要があります。それ以外の場合、エラーがスローされます
**注:Leaseインターフェイスを確認するには、bluzelle.codec.crud.leease_pb2を参照してください
単一のトランザクションで複数のメッセージをラップします。
await sdk . db . with_transactions (
[
MsgCreate (
creator = sdk . wallet . address ,
uuid = uuid ,
key = "firstKey" ,
value = "firstValue" . encode ( "utf-8" ),
lease = Lease ( hours = 1 ),
),
MsgCreate (
creator = sdk . wallet . address ,
uuid = uuid ,
key = "secondKey" ,
value = "firstValue" . encode ( "utf-8" ),
lease = Lease ( hours = 1 ),
),
MsgCreate (
creator = sdk . wallet . address ,
uuid = uuid ,
key = "thirdKey" ,
value = "firstValue" . encode ( "utf-8" ),
lease = Lease ( hours = 1 ),
),
],
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
memo = "optionalMemo" ,
)注:翻訳で渡された関数でメッセージのいずれかが失敗した場合、すべてのメッセージが失敗し、ブロックにコミットされません
データベースにキー価値を作成します。
await sdk . db . tx . Create (
MsgCreate (
creator = sample_creator ,
uuid = uuid ,
key = "someKeyB" ,
value = "someValue" . encode ( "utf-8" ),
lease = Lease ( days = 1 ),
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)返品:msgcreateresponse(空のオブジェクト)
| msgcreaterequest | 説明 | タイプ |
|---|---|---|
| 作成者 | 署名者アドレス | str |
| uuid | データベース識別子 | str |
| 鍵 | str | |
| 価値 | バイト | |
| メタデータ | バイト | |
| リース | キー価値のライフスパン | リース * |
*リース(秒=番号、数分=数、hours = number、days = number、years = number)
データベースのキー価値を削除します。
await sdk . db . tx . Delete (
MsgDelete ( creator = sample_creator , uuid = "myUuid" , key = "myKey" ),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)返品:msgdeleteresponse(空のオブジェクト)
| MSGDELETEREQUEST | 説明 | タイプ |
|---|---|---|
| 作成者 | 署名者アドレス | str |
| uuid | データベース識別子 | str |
| 鍵 | 削除するキー | str |
指定されたUUIDのキー価値のすべてのリースを更新します。
response = await sdk . db . tx . DeleteAll ( creator = sample_creator , uuid = "myUuid" )
print ( response )返品:promise => msgdeleteallResponse(空のオブジェクト)
| MSGDELETEALLREQUEST | 説明 | タイプ |
|---|---|---|
| 作成者 | 署名者アドレス | str |
| uuid | データベース識別子 | str |
指定されたUUIDでキー価値のセットを更新します。
await sdk . db . tx . MultiUpdate (
creator = sample_creator ,
uuid = "myUuid" ,
keyValues = [
MsgUpdate (
creator = sample_creator ,
uuid = "uuid" ,
key = "myKey-1" ,
value = "updatedValue-2" . encode ( "utf-8" ),
lease = Lease ( minutes = 1 ),
),
MsgUpdate (
creator = sample_creator ,
uuid = "uuid" ,
key = "myKey-2" ,
value = "updatedValue-2" . encode ( "utf-8" ),
lease = Lease ( minutes = 1 ),
),
],
)返品:msgmultiupdateresponse(空のオブジェクト)
| MSGMULTIUPDATEREQUEST | 説明 | タイプ |
|---|---|---|
| 作成者 | 署名者アドレス | 弦 |
| uuid | データベース識別子 | 弦 |
| キー価値 | keyvaleurease(key:str、value:bytes、lease:lease) | keyvaleureaeres [] |
データベースのキー価値のリースを更新します。
await sdk . db . tx . Rename (
MsgRename (
creator = sample_creator , uuid = "myUuid" , key = "existingKey" , newKey = "renamingKey"
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)返品:MSGRENAMERESPONSE(空のオブジェクト)
| MSGRENAMEREQUEST | 説明 | タイプ |
|---|---|---|
| 作成者 | 署名者アドレス | str |
| uuid | データベース識別子 | str |
| 鍵 | 既存のキー | str |
| NewKey | 変更に使用される新しいキー | str |
データベースのキー価値のリースを更新します。
respons = await sdk . db . tx . RenewLease (
MsgRenewLease (
creator = sample_creator , uuid = "myUuid" , key = "existingKey" , lease = Lease ( hours = 1 )
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)リターン:msgrenewleaseresponse(空のオブジェクト)
| msgrenewleaserequest | 説明 | タイプ |
|---|---|---|
| 作成者 | 署名者アドレス | str |
| uuid | データベース識別子 | str |
| 鍵 | str | |
| リース | キー価値のための新しいライフスパン | リース * |
*リース(秒=番号、数分=数、hours = number、days = number、years = number)
指定されたUUIDのキー価値のすべてのリースを更新します。
await sdk . db . tx . RenewLeasesAll (
MsgRenewLeasesAll (
creator = sample_creator ,
uuid = uuid ,
lease = Lease ( seconds = 10 ),
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)リターン:msgrenewleasesallResponse(空のオブジェクト)
| msgrenewleasesallRequest | 説明 | タイプ |
|---|---|---|
| 作成者 | 署名者アドレス | str |
| uuid | データベース識別子 | str |
| リース | すべてのキー価値の新しいライフスパン | リース * |
*リース(秒=番号、数分=数、hours = number、days = number、years = number)
データベースのキー価値を更新します。
await sdk . db . tx . Update (
MsgUpdate (
creator = sample_creator ,
uuid = uuid ,
key = "myKey" ,
value = "updatedValue" . encode ( "utf-8" ),
lease = Lease ( minutes = 1 ),
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)返品:msgupdateresponse(空のオブジェクト)
| MSGUPDATEREQUEST | 説明 | タイプ |
|---|---|---|
| 作成者 | 署名者アドレス | str |
| uuid | データベース識別子 | str |
| 鍵 | str | |
| 価値 | 更新する新しい値 | バイト |
| メタデータ | バイト | |
| リース | キー価値のライフスパン | リース |
*リース(秒=番号、数分=数、hours = number、days = number、years = number)
データベースのキー値をupSert:キーの価値を作成するキーが存在しない場合、キーが存在する場合はキー値を更新します
await sdk . db . tx . Upsert (
MsgUpsert (
creator = sample_creator ,
uuid = "myUuid" ,
key = "keyToUpsert" ,
value = "valueToUpsert" . encode ( "utf-8" ),
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)返品:MSGUPSERTRESPONSE(空のオブジェクト)
| msgupSertRequest | 説明 | タイプ |
|---|---|---|
| 作成者 | 署名者アドレス | str |
| uuid | データベース識別子 | str |
| 鍵 | str | |
| 価値 | バイト | |
| メタデータ | バイト | |
| リース | キー価値のライフスパン | リース * |
*リース(秒=番号、数分=数、hours = number、days = number、years = number)
指定されたUUIDのキー価値の総数をクエリします。
await sdk . db . q . Count (
MsgCount ( uuid = "myUuid" ),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)返品:queryCountResponse
| queryCountRequest | 説明 | タイプ |
|---|---|---|
| uuid | データベース識別子 | str |
| QueryCountResponse | 説明 | タイプ |
|---|---|---|
| カウント | UUIDのキー価値の数 | int |
キー価値の残りのリース時間を取得します。
response = await sdk . db . q . GetLease (
QueryGetLeaseRequest (
uuid = uuid ,
key = "myKey" ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)返品:querygetLeaseresponse
| querygetLeaseRequest | 説明 | タイプ |
|---|---|---|
| uuid | データベース識別子 | str |
| 鍵 | str |
| querygetLeaseresponse | 説明 | タイプ |
|---|---|---|
| 秒 | キー価値の残りのリース時間 | 番号 |
キー価値の残りのリース時間を取得します。
response = await sdk . db . q . GetNShortestLeases (
QueryGetNShortestLeasesRequest (
uuid = uuid ,
num = 5 ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)返品:querygetnshortestLeasesResponse
| querygetnshortestLeasesRequest | 説明 | タイプ |
|---|---|---|
| uuid | データベース識別子 | str |
| num | 返されるキーリースの数 | int |
| querygetnshortestLeaseSesponse | 説明 | タイプ |
|---|---|---|
| キーリース | keylease(key = string、seconds = number) | リスト(keylease) |
指定されたUUIDにキーが存在するかどうかを確認します。
await sdk . db . q . Has (
MsgHas (( uuid = "myUuid" ), ( key = "myKey" )),
( timeout = 3000 ),
( metadata = None ),
( credentials = None ),
( wait_for_ready = True ),
( compression = False )
);返品:queryhasResponse
| QueryhasRequest | 説明 | タイプ |
|---|---|---|
| uuid | データベース識別子 | str |
| 鍵 | str |
| queryhasresponse | 説明 | タイプ |
|---|---|---|
| もっている | uuidにキーが存在する場合はtrue。それ以外の場合 | ブール |
指定されたUUIDのキーの完全なセットを読んでください。 ### hhio
await sdk . db . q . Keys (
MsgKeys ( uuid = "myUuid" , pagination = { "start" : "key-a" , "limit" : 50 }),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)返品:querykeysResponse
| QueryKeysRequest | 説明 | タイプ |
|---|---|---|
| uuid | データベース識別子 | str |
| ページネーション(オプション) | PagingRequest(startKey = string、limit = long) | PagingRequest |
| querykeysResponse | 説明 | タイプ |
|---|---|---|
| キー | リスト(str) | |
| ページネーション(オプション) | pagingResponse {nextkey:string、total:long} | ページングの応答 |
指定されたUUIDのキー価値の完全なセットを読み取ります。
response = await sdk . db . q . KeyValues (
QueryKeyValuesRequest ( uuid = uuid ),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)返品:queryKeyValuesResponse
| QueryKeyValuesRequest | 説明 | タイプ |
|---|---|---|
| uuid | データベース識別子 | str |
| ページネーション(オプション) | pagingRequest {startkey:string、limit:long} | PagingRequest |
| QueryKeyValuesResponse | 説明 | タイプ |
|---|---|---|
| キー価値 | keyvalue {key:string、value:uint8array} | リスト(keyvalue) |
| ページネーション(オプション) | pagingResponse {nextkey:string、total:long} | ページングの応答 |
指定されたUUIDのアドレスでキーの完全なセットを読んでください。 ### hhio
await sdk . db . q . Keys (
MsgKeys (( uuid = "myUuid" ), ( address = sample_creator )),
( timeout = 3000 ),
( metadata = None ),
( credentials = None ),
( wait_for_ready = True ),
( compression = False )
);返品:querymykeysResponse
| querymykeysrequest | 説明 | タイプ |
|---|---|---|
| uuid | データベース識別子 | str |
| 住所 | Bluzelleアドレス | str |
| ページネーション(オプション) | pagingRequest {startkey:string、limit:long} | PagingRequest |
| QueryMyKeySResponse | 説明 | タイプ |
|---|---|---|
| キー | リスト(文字列) | |
| ページネーション(オプション) | pagingResponse {nextkey:string、total:long} | ページングの応答 |
データベースから値を読み取ります。
response = await sdk . db . q . Read (
QueryReadRequest (
uuid = uuid ,
key = "myKey" ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)返品:queryreadResponse
| QueryReadRequest | 説明 | タイプ |
|---|---|---|
| uuid | データベース識別子 | str |
| 鍵 | str |
| QueryReadResponse | 説明 | タイプ |
|---|---|---|
| 価値 | バイト |
指定されたUUIDでキーで検索します。
response = await sdk . db . q . Search (
QuerySearchRequest (
uuid = uuid ,
searchString = "s" ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)返品:QuerySearchResponse
| QuerySearchRequest | 説明 | タイプ |
|---|---|---|
| uuid | データベース識別子 | str |
| 検索ストリング | SearchStringから始まるキーのクエリ | str |
| ページネーション(オプション) | {startkey:string、limit:long} | PagingRequest |
| QuerySearchResponse | 説明 | タイプ |
|---|---|---|
| キー価値 | keyvalue {key:string、value:uint8array} | リスト(keyvalue) |
| ページネーション(オプション) | {nextkey:string、total:long} | ページングの応答 |