Bluzelle-Py é uma biblioteca Python que pode ser usada para acessar o serviço de banco de dados Bluzelle.
A Biblioteca Python ainda não foi publicada em nenhum gerente de pacotes, para instalar e usar, siga as instruções abaixo:
$ # build the library
$ pip install " poetry==1.1.7 "
$ poetry config virtualenvs.create false
$ poetry install --no-interaction --no-ansi
$ pip install .Existe uma ação do GitHub que implanta novos lançamentos (usando novas tags) nos pacotes PYPI. (necessário para obter um Pypi_token no site https://pypi.org e adicioná -lo aos segredos do repositório do GitHub.)
Para conectar sua instância ao Bluzelle TestNet, você pode:
Mint uma conta visitando https://client.sentry.testnet.private.bluzelle.com:1317/mint , que fornecerá um mnemônico e um endereço. Isso pode demorar um pouco.
Verifique seu saldo em https://client.sentry.testnet.private.bluzelle.com:1317/bank/balances/{ddress} . Se o saldo da sua conta for 0, Mint Outra conta até que um saldo positivo do UBNT mostre
Configure sua instância do SDK com as seguintes opções:
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 ,
)NOTA: Se o gasPrice e/ou MaxGAs especificados forem muito baixos, quaisquer transações poderão ser rejeitadas por um validador (por exemplo, uma transação requer mais gás que o MAXGAS especificado ou o gasPrice é muito baixo para cobrir as taxas do validador). A sugestão padrão para esses campos acima será suficiente.
Nota: Se você deseja executar exemplos na pasta da biblioteca, coloque os códigos dentro de um arquivo no diretório raiz
NOTA: Para ambas as versão, crie uma instância SDK e use um loop Asyncio para executar o programa. Para mais detalhes sobre este exemplo, veja o exemplo/exemplo.py.
Depois de configurar seu SDK, você terá acesso a vários módulos e seus métodos correspondentes.
sdk.[module].[q or tx or field].[Method](**kwargs)
Cada método pega um único parâmetro como um objeto (ou seja, solicitação) e retorna um objeto (ou seja, resposta). Para ver os tipos de solicitação e resposta, consulte o curium/proto/[módulo] para consultas e transações.
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 )*Nota: a resposta é um Uint8Array que representa o valor codificado por byte que havia sido consultado. Para obter a representação de strings do valor, use novo textDecoder (). Decodge (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 )O SDK também pode enviar transações para a corrente. Cada módulo possui um método TX para enviar várias mensagens de transação.
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 ,
)*Nota: o SDK está assinando e enviando a transação, para que o endereço do assinante deve corresponder ao criador da transação. Caso contrário, um erro será lançado
** Nota: consulte Bluzelle.codec.crud.lease_pb2 para ver a interface de arrendamento
Enrole várias mensagens em uma única transação.
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" ,
)Nota: Se alguma das mensagens falhar na função passada para o Withtransaction, todas as mensagens falharão e não serão comprometidas com um bloco
Crie um valor-chave no banco de dados.
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 ,
)Retornos: MsgCreaterSponse (objeto vazio)
| MsgCreaterEquest | Descrição | Tipo |
|---|---|---|
| criador | Endereço do assinante | str |
| uuid | Identificador de banco de dados | str |
| chave | str | |
| valor | bytes | |
| Metadados | bytes | |
| alugar | Vida-chave-valor-salpão | Alugar * |
*Arrendamento (segundos = número, minutos = número, horas = número, dias = número, anos = número)
Exclua um valor-chave no banco de dados.
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 ,
)Retornos: msgDeleteSponse (objeto vazio)
| MsgDeleteRequest | Descrição | Tipo |
|---|---|---|
| criador | Endereço do assinante | str |
| uuid | Identificador de banco de dados | str |
| chave | Chave para excluir | str |
Renove todos os arrendamentos de valores-chave no UUID especificado.
response = await sdk . db . tx . DeleteAll ( creator = sample_creator , uuid = "myUuid" )
print ( response )Retornos: Promise => msgdeleteAllResponse (objeto vazio)
| MsgDeleteAllRequest | Descrição | Tipo |
|---|---|---|
| criador | Endereço do assinante | str |
| uuid | Identificador de banco de dados | str |
Atualize um conjunto de valores-chave no UUID especificado.
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 ),
),
],
)Retornos: msgmultiUpDaterSponse (objeto vazio)
| Msgmultiupdaterequest | Descrição | Tipo |
|---|---|---|
| criador | Endereço do assinante | corda |
| uuid | Identificador de banco de dados | corda |
| KeyValues | KeyValueLease (chave: str, valor: bytes, arrendamento: arrendamento) | KeyValueLease [] |
Renove o arrendamento de um valor-chave no banco de dados.
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 ,
)Retornos: MsgrenameResponse (objeto vazio)
| Msgrenamerequest | Descrição | Tipo |
|---|---|---|
| criador | Endereço do assinante | str |
| uuid | Identificador de banco de dados | str |
| chave | Chave existente | str |
| Newkey | Nova chave usada para renomear | str |
Renove o arrendamento de um valor-chave no banco de dados.
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 ,
)Retornos: MsGrenewleaserSponse (objeto vazio)
| MSGrenewleaserequest | Descrição | Tipo |
|---|---|---|
| criador | Endereço do assinante | str |
| uuid | Identificador de banco de dados | str |
| chave | str | |
| alugar | Nova vida de vida para o valor-chave | Alugar * |
*Arrendamento (segundos = número, minutos = número, horas = número, dias = número, anos = número)
Renove todos os arrendamentos de valores-chave no UUID especificado.
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 ,
)Retornos: MsGrenewleasesAllResponse (objeto vazio)
| MsGrenewleasalLeQuest | Descrição | Tipo |
|---|---|---|
| criador | Endereço do assinante | str |
| uuid | Identificador de banco de dados | str |
| alugar | Nova vida de vida para todos os valores-chave | Alugar * |
*Arrendamento (segundos = número, minutos = número, horas = número, dias = número, anos = número)
Atualize um valor-chave no banco de dados.
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 ,
)Retornos: msgupdaterSponse (objeto vazio)
| Msgupdaterequest | Descrição | Tipo |
|---|---|---|
| criador | Endereço do assinante | str |
| uuid | Identificador de banco de dados | str |
| chave | str | |
| valor | Novo valor para atualizar para | bytes |
| Metadados | bytes | |
| alugar | Vida-chave-valor-salpão | Alugar |
*Arrendamento (segundos = número, minutos = número, horas = número, dias = número, anos = número)
Aumentar um valor-chave no banco de dados: crie um valor-chave se a chave não existir, atualize o valor da chave se a chave existir
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 ,
)Retornos: msgupSerTResponse (objeto vazio)
| MsgupSerTReCest | Descrição | Tipo |
|---|---|---|
| criador | Endereço do assinante | str |
| uuid | Identificador de banco de dados | str |
| chave | str | |
| valor | bytes | |
| Metadados | bytes | |
| alugar | Vida-chave-valor-salpão | Alugar * |
*Arrendamento (segundos = número, minutos = número, horas = número, dias = número, anos = número)
Consulte o número total de valores-chave no UUID especificado.
await sdk . db . q . Count (
MsgCount ( uuid = "myUuid" ),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Retornos: QueryCountResponse
| QuerycountReCest | Descrição | Tipo |
|---|---|---|
| uuid | Identificador de banco de dados | str |
| QueryCountSponse | Descrição | Tipo |
|---|---|---|
| contar | Número de valores-chave no UUID | int |
Obtenha o tempo de arrendamento restante de um valor-chave.
response = await sdk . db . q . GetLease (
QueryGetLeaseRequest (
uuid = uuid ,
key = "myKey" ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Retornos: QuerygetLeaserSponse
| QuerygetLeaseQuest | Descrição | Tipo |
|---|---|---|
| uuid | Identificador de banco de dados | str |
| chave | str |
| QuerygetLeaserSponse | Descrição | Tipo |
|---|---|---|
| segundos | O tempo de arrendamento restante do valor-chave | número |
Obtenha o tempo restante do arrendamento de valores-chave.
response = await sdk . db . q . GetNShortestLeases (
QueryGetNShortestLeasesRequest (
uuid = uuid ,
num = 5 ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Retornos: QuerygetnshorTestLeasesResponse
| QuerygetnshorTestLeasesRequest | Descrição | Tipo |
|---|---|---|
| uuid | Identificador de banco de dados | str |
| num | Número de lletas de chave para retornar | int |
| QuerygetnshorTestLeasesResponse | Descrição | Tipo |
|---|---|---|
| KeyLleases | Keylease (key = string, segundos = número) | Lista (KeyLease) |
Verifique se existe uma chave no UUID especificado.
await sdk . db . q . Has (
MsgHas (( uuid = "myUuid" ), ( key = "myKey" )),
( timeout = 3000 ),
( metadata = None ),
( credentials = None ),
( wait_for_ready = True ),
( compression = False )
);Retornos: QueryhasResponse
| QueryhasRequest | Descrição | Tipo |
|---|---|---|
| uuid | Identificador de banco de dados | str |
| chave | str |
| QueryhasResponse | Descrição | Tipo |
|---|---|---|
| tem | Verdadeiro se houver chave no UUID; falso caso contrário | bool |
Leia o conjunto completo de chaves no UUID especificado. ### 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 ,
)Retornos: QuerykeysResponse
| QuerykeysRequest | Descrição | Tipo |
|---|---|---|
| uuid | Identificador de banco de dados | str |
| Paginação (opcional) | PagingRequest (startKey = string, limite = long) | PagingRequest |
| QuerykeysResponse | Descrição | Tipo |
|---|---|---|
| chaves | Lista (STR) | |
| Paginação (opcional) | PagingResponse {NextKey: String, Total: Long} | PagingResponse |
Leia o conjunto completo de valores-chave no UUID especificado.
response = await sdk . db . q . KeyValues (
QueryKeyValuesRequest ( uuid = uuid ),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Retornos: QueryKeyValuesResponse
| QueryKeyValuesRequest | Descrição | Tipo |
|---|---|---|
| uuid | Identificador de banco de dados | str |
| Paginação (opcional) | PagingRequest {startKey: string, limite: long} | PagingRequest |
| QueryKeyValuesResponse | Descrição | Tipo |
|---|---|---|
| KeyValues | Keyvalue {key: string, valor: uint8array} | Lista (KeyValue) |
| Paginação (opcional) | PagingResponse {NextKey: String, Total: Long} | PagingResponse |
Leia o conjunto completo de chaves por endereço no UUID especificado. ### HHIO
await sdk . db . q . Keys (
MsgKeys (( uuid = "myUuid" ), ( address = sample_creator )),
( timeout = 3000 ),
( metadata = None ),
( credentials = None ),
( wait_for_ready = True ),
( compression = False )
);Retornos: QueryMykeysResponse
| QuerymykeysRequest | Descrição | Tipo |
|---|---|---|
| uuid | Identificador de banco de dados | str |
| endereço | Endereço de Bluzelle | str |
| Paginação (opcional) | PagingRequest {startKey: string, limite: long} | PagingRequest |
| QueryMykeysResponse | Descrição | Tipo |
|---|---|---|
| chaves | Lista (string) | |
| Paginação (opcional) | PagingResponse {NextKey: String, Total: Long} | PagingResponse |
Leia um valor do banco de dados.
response = await sdk . db . q . Read (
QueryReadRequest (
uuid = uuid ,
key = "myKey" ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Retornos: QueryReadResponse
| QueryreadRequest | Descrição | Tipo |
|---|---|---|
| uuid | Identificador de banco de dados | str |
| chave | str |
| QueryReadResponse | Descrição | Tipo |
|---|---|---|
| valor | bytes |
Pesquise por chave no UUID especificado.
response = await sdk . db . q . Search (
QuerySearchRequest (
uuid = uuid ,
searchString = "s" ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Retornos: QuerySearchResponse
| QuerySearchRequest | Descrição | Tipo |
|---|---|---|
| uuid | Identificador de banco de dados | str |
| Pesquisa | Consulta para chaves que começam ou correspondem à pesquisa de pesquisa | str |
| Paginação (opcional) | {startKey: string, limite: long} | PagingRequest |
| QuerySearchResponse | Descrição | Tipo |
|---|---|---|
| KeyValues | Keyvalue {key: string, valor: uint8array} | Lista (KeyValue) |
| Paginação (opcional) | {NextKey: String, Total: Long} | PagingResponse |