Bluzelle-Py是一個Python庫,可用於訪問Bluzelle數據庫服務。
Python庫尚未在任何軟件包管理器上發布,要安裝和使用以下說明:
$ # build the library
$ pip install " poetry==1.1.7 "
$ poetry config virtualenvs.create false
$ poetry install --no-interaction --no-ansi
$ pip install .有一個GitHub操作將新版本(使用新標籤)部署到PYPI軟件包。 (需要從https://pypi.org網站獲取PYPI_TOKEN並將其添加到GitHub存儲庫秘密中。)
要將您的實例連接到Bluzelle TestNet,您可以:
通過訪問https://client.sentry.testnet.private.bluzelle.com:1317/mint來造成帳戶,該帳戶將提供助記符和地址。這可能需要一段時間。
在https://client.sentry.testnet.private.bluzelle.com:1317/bank/balances/ {address/ {address}上查看您的餘額。如果您的帳戶餘額為0,則造成另一個帳戶,直到陽性餘額顯示
使用以下選項配置您的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 ,
)注意:如果指定的GASPRICE和/或MAXGA太低,則任何交易可能會被驗證器拒絕(例如,交易需要的氣體比指定的MaxGas多,或者GASPRICE太低而無法覆蓋驗證者費用)。上述這些字段的默認建議就足夠了。
注意:如果要在庫文件夾中運行示例,請將代碼放在root目錄中的文件中
注意:對於兩個版本,首先創建一個SDK實例,然後使用Asyncio循環運行程序。有關此有關的更多詳細信息,請參見示例/示例.py。
配置SDK後,您將可以訪問各種模塊及其相應的方法。
sdk.[module].[q or tx or field].[Method](**kwargs)
每個方法將單個參數作為對象(即請求),然後返回對象(即響應)。要查看請求和響應類型,請參閱curium/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()。解碼(desp.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正在簽署和發送事務,因此簽名地址必須與交易的創建者匹配。否則,將拋出錯誤
**注意:請參閱bluzelle.codec.crud.lease_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" ,
)注意:如果任何一條消息中的任何一條函數中的任何一條失敗,則將所有消息傳遞給Transaction,則所有消息都會失敗,並且不投入塊
在數據庫中創建一個鍵值。
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 | |
| 價值 | 位元組 | |
| 元數據 | 位元組 | |
| 租 | 鑰匙值壽命 | 租 * |
*租賃(秒=數字,分鐘=數字,小時=數字,天=數字,數字,年=數字)
刪除數據庫中的鍵值。
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 | 數據庫標識符 | 細繩 |
| 關鍵價值 | KeyValuelease(鑰匙:str,價值:字節,租賃:租賃) | KeyValuelease [] |
更新數據庫中的鍵值租賃。
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 |
| 紐基 | 用於重命名的新密鑰 | 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 | |
| 租 | 鑰匙值的新壽命 | 租 * |
*租賃(秒=數字,分鐘=數字,小時=數字,天=數字,數字,年=數字)
續簽指定的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 |
| 租 | 所有鑰匙價值的新壽命 | 租 * |
*租賃(秒=數字,分鐘=數字,小時=數字,天=數字,數字,年=數字)
更新數據庫中的鍵值。
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 | |
| 價值 | 新價值要更新到 | 位元組 |
| 元數據 | 位元組 | |
| 租 | 鑰匙值壽命 | 租 |
*租賃(秒=數字,分鐘=數字,小時=數字,天=數字,數字,年=數字)
在數據庫中提高鍵值:如果不存在鍵,請創建一個鍵值,請更新鍵值,如果鍵存在
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 | |
| 價值 | 位元組 | |
| 元數據 | 位元組 | |
| 租 | 鑰匙值壽命 | 租 * |
*租賃(秒=數字,分鐘=數字,小時=數字,天=數字,數字,年=數字)
查詢指定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 ,
)返回:querygetnshortestleasesponse
| querygetnshortestleasesrequest | 描述 | 類型 |
|---|---|---|
| UUID | 數據庫標識符 | str |
| num | 要返回的鑰匙扣數量 | int |
| querygetnshortestleasesresponse | 描述 | 類型 |
|---|---|---|
| 鑰匙扣 | KeyLease(鍵=字符串,秒=數字) | 列表(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中存在,則為是真的;否則為錯誤 | 布爾 |
閱讀指定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 =字符串,limit = long) | pagingrequest |
| querykeysresponse | 描述 | 類型 |
|---|---|---|
| 鑰匙 | 列表(str) | |
| 分頁(可選) | pagingResponse {nextkey:string,total:long} | 打pagingResponse |
閱讀指定UUID中的完整鍵值集。
response = await sdk . db . q . KeyValues (
QueryKeyValuesRequest ( uuid = uuid ),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)返回:queryKeyvaluesResponse
| QueryKeyKeyvaluesRequest | 描述 | 類型 |
|---|---|---|
| UUID | 數據庫標識符 | str |
| 分頁(可選) | pagingrequest {startKey:string,limit:long} | pagingrequest |
| queryKeyValuesResponse | 描述 | 類型 |
|---|---|---|
| 關鍵價值 | keyValue {key:string,value:uint8array} | 列表(KeyValue) |
| 分頁(可選) | pagingResponse {nextkey:string,total:long} | 打pagingResponse |
通過指定的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} | 打pagingResponse |
從數據庫中讀取一個值。
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 |
| 搜索串 | 查詢以或匹配搜索串開頭或匹配的鍵 | str |
| 分頁(可選) | {startKey:字符串,極限:長} | pagingrequest |
| querysearchResponse | 描述 | 類型 |
|---|---|---|
| 關鍵價值 | keyValue {key:string,value:uint8array} | 列表(KeyValue) |
| 分頁(可選) | {NextKey:String,Total:Long} | 打pagingResponse |