Bluzelle-Py es una biblioteca de Python que se puede usar para acceder al servicio de base de datos Bluzelle.
La biblioteca de Python aún no se ha publicado en ningún administrador de paquetes, para instalar y usar Sigue las instrucciones a continuación:
$ # build the library
$ pip install " poetry==1.1.7 "
$ poetry config virtualenvs.create false
$ poetry install --no-interaction --no-ansi
$ pip install .Hay una acción de GitHub que implementa nuevas versiones (usando nuevas etiquetas) a los paquetes PYPI. (Se requiere obtener un Pypi_Token del sitio web https://pypi.org y agregarlo a los secretos del repositorio de GitHub).
Para conectar su instancia a Bluzelle Testnet, puede:
Mint una cuenta visitando https://client.sentry.testnet.private.bluzelle.com:1317/mint , que proporcionará una mnemónica y una dirección. Esto puede llevar un tiempo.
Consulte su saldo en https://client.sentry.testnet.private.bluzelle.com:1317/bank/balances/{address} . Si el saldo de su cuenta es 0, menta otra cuenta hasta que muestre un saldo de UBNT positivo
Configure su instancia de SDK con las siguientes opciones:
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: Si el Gasprice especificado y/o MaxGas es demasiado bajo, cualquier transacción puede ser rechazada por un validador (por ejemplo, una transacción requiere más gas de lo especificado por MaxGas, o el gasprice es demasiado bajo para cubrir las tarifas de validador). La sugerencia predeterminada para estos campos anteriores será suficiente.
Nota: Si desea ejecutar ejemplos en la carpeta de la biblioteca, coloque los códigos dentro de un archivo en el directorio root
Nota: Para ambas versión, primero cree una instancia SDK y luego use un bucle Asyncio para ejecutar el programa. Para obtener más detalles sobre esto, ver ejemplo/ejemplo.py.
Después de configurar su SDK, tendrá acceso a varios módulos y sus métodos correspondientes.
sdk.[module].[q or tx or field].[Method](**kwargs)
Cada método toma un solo parámetro como objeto (es decir, solicitud) y devuelve un objeto (es decir, respuesta). Para ver los tipos de solicitud y respuesta, consulte el Curium/Proto/[Módulo] para consultas y transacciones.
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: la respuesta es un Uint8Array que representa el valor codificado por los bytes que se había consultado. Para obtener la representación de cadena del valor, use nuevo TextDeCoder (). Decode (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 )El SDK también puede enviar transacciones a la cadena. Cada módulo tiene un método TX para enviar varios mensajes de transacción.
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: El SDK está firmando y enviando la transacción, por lo que la dirección del firmante debe coincidir con el creador de la transacción. De lo contrario, se lanzará un error
** Nota: ver bluzelle.codec.crud.lease_pb2 para ver la interfaz de arrendamiento
Envuelva múltiples mensajes en una sola transacción.
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: Si alguno de los mensajes fallas en la función pasada a WithTransaction, todos los mensajes fallarán y no se comprometerán a un bloque
Cree un valor clave en la base de datos.
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 ,
)Devuelve: msgcreaterSponse (objeto vacío)
| Msgcreater -equest | Descripción | Tipo |
|---|---|---|
| creador | Dirección de firmante | stri |
| uuid | Identificador de base de datos | stri |
| llave | stri | |
| valor | bytes | |
| metadatos | bytes | |
| alquiler | Longitud de vida del valor clave | Alquiler * |
*Arrendamiento (segundos = número, minutos = número, horas = número, días = número, años = número)
Elimine un valor clave en la base de datos.
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 ,
)Devuelve: msgdeleterponse (objeto vacío)
| Msgdeleterequest | Descripción | Tipo |
|---|---|---|
| creador | Dirección de firmante | stri |
| uuid | Identificador de base de datos | stri |
| llave | Clave para eliminar | stri |
Renovar todos los arrendamientos de valores clave en el UUID especificado.
response = await sdk . db . tx . DeleteAll ( creator = sample_creator , uuid = "myUuid" )
print ( response )Devuelve: Promise => MsgDelEdealLResponse (objeto vacío)
| MsgdelEteallRequest | Descripción | Tipo |
|---|---|---|
| creador | Dirección de firmante | stri |
| uuid | Identificador de base de datos | stri |
Actualice un conjunto de valores clave en el 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 ),
),
],
)Devuelve: msgmultiupdaterSponse (objeto vacío)
| MsgmultiUpDateRequest | Descripción | Tipo |
|---|---|---|
| creador | Dirección de firmante | cadena |
| uuid | Identificador de base de datos | cadena |
| valores de teclas | KeyValuelasa (clave: STR, valor: bytes, arrendamiento: arrendamiento) | Keyvaluelasa [] |
Renovar el arrendamiento de un valor clave en la base de datos.
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 ,
)Devuelve: msgrenameresponse (objeto vacío)
| Msgrenamerequest | Descripción | Tipo |
|---|---|---|
| creador | Dirección de firmante | stri |
| uuid | Identificador de base de datos | stri |
| llave | Clave existente | stri |
| nuevo | Nueva clave utilizada para cambiar el nombre | stri |
Renovar el arrendamiento de un valor clave en la base de datos.
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 ,
)Devuelve: MSGRENEWLEASERAPONDE (objeto vacío)
| MsgrenewleaseRequest | Descripción | Tipo |
|---|---|---|
| creador | Dirección de firmante | stri |
| uuid | Identificador de base de datos | stri |
| llave | stri | |
| alquiler | Nuevo span de vida para el valor clave | Alquiler * |
*Arrendamiento (segundos = número, minutos = número, horas = número, días = número, años = número)
Renovar todos los arrendamientos de valores clave en el 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 ,
)Devuelve: MSGRENEWLEESSAlLRESPONDE (objeto vacío)
| MSGRENEWLEESSALLREQUEST | Descripción | Tipo |
|---|---|---|
| creador | Dirección de firmante | stri |
| uuid | Identificador de base de datos | stri |
| alquiler | Nuevo span de vida para todos los valores clave | Alquiler * |
*Arrendamiento (segundos = número, minutos = número, horas = número, días = número, años = número)
Actualice un valor clave en la base de datos.
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 ,
)Devuelve: msgupdaterSponse (objeto vacío)
| MsgupdateRequest | Descripción | Tipo |
|---|---|---|
| creador | Dirección de firmante | stri |
| uuid | Identificador de base de datos | stri |
| llave | stri | |
| valor | Nuevo valor para actualizar a | bytes |
| metadatos | bytes | |
| alquiler | Longitud de vida del valor clave | Alquiler |
*Arrendamiento (segundos = número, minutos = número, horas = número, días = número, años = número)
Upsert un valor de clave en la base de datos: cree un valor de clave si la clave no existe, actualice el valor de la tecla si existe la clave
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 ,
)Devuelve: msgupSerTResponse (objeto vacío)
| MsgupserTrecest | Descripción | Tipo |
|---|---|---|
| creador | Dirección de firmante | stri |
| uuid | Identificador de base de datos | stri |
| llave | stri | |
| valor | bytes | |
| metadatos | bytes | |
| alquiler | Longitud de vida del valor clave | Alquiler * |
*Arrendamiento (segundos = número, minutos = número, horas = número, días = número, años = número)
Consulte el número total de valores clave en el UUID especificado.
await sdk . db . q . Count (
MsgCount ( uuid = "myUuid" ),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Devoluciones: QueryCounTResponse
| Consulta | Descripción | Tipo |
|---|---|---|
| uuid | Identificador de base de datos | stri |
| Consulta | Descripción | Tipo |
|---|---|---|
| contar | Número de valores clave en el uuid | intencionalmente |
Obtenga el tiempo de arrendamiento restante de un valor clave.
response = await sdk . db . q . GetLease (
QueryGetLeaseRequest (
uuid = uuid ,
key = "myKey" ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Devoluciones: QueryGetLeAsperSponse
| Consulta | Descripción | Tipo |
|---|---|---|
| uuid | Identificador de base de datos | stri |
| llave | stri |
| Consulta de respuesta | Descripción | Tipo |
|---|---|---|
| artículos de segunda clase | Tiempo de arrendamiento restante de valor clave | número |
Obtenga el tiempo de arrendamiento restante de un valor clave.
response = await sdk . db . q . GetNShortestLeases (
QueryGetNShortestLeasesRequest (
uuid = uuid ,
num = 5 ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Devoluciones: QueryGetNshortestLeaSResponse
| QueryGetNshortestLeaSRequest | Descripción | Tipo |
|---|---|---|
| uuid | Identificador de base de datos | stri |
| numer | Número de keylases para regresar | intencionalmente |
| QueryGetNshortestLeesResponse | Descripción | Tipo |
|---|---|---|
| keylases | KeyLease (Key = String, Seconds = Número) | Lista (KeyLease) |
Compruebe si existe una clave en el UUID especificado.
await sdk . db . q . Has (
MsgHas (( uuid = "myUuid" ), ( key = "myKey" )),
( timeout = 3000 ),
( metadata = None ),
( credentials = None ),
( wait_for_ready = True ),
( compression = False )
);Devoluciones: QueryhasResponse
| Consulta | Descripción | Tipo |
|---|---|---|
| uuid | Identificador de base de datos | stri |
| llave | stri |
| Consulta | Descripción | Tipo |
|---|---|---|
| tiene | Verdadero si existe la clave en UUID; falso de lo contrario | bool |
Lea el conjunto completo de claves en el 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 ,
)Devoluciones: QueryKeysResponse
| QueryKeysRequest | Descripción | Tipo |
|---|---|---|
| uuid | Identificador de base de datos | stri |
| Pagination (opcional) | PagingRequest (startkey = string, limit = long) | Paging Request |
| Responsabilidad de consultas | Descripción | Tipo |
|---|---|---|
| llaves | Lista (STR) | |
| Pagination (opcional) | PagingResponse {nextKey: String, Total: Long} | PaggingResponse |
Lea el conjunto completo de valores clave en el UUID especificado.
response = await sdk . db . q . KeyValues (
QueryKeyValuesRequest ( uuid = uuid ),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Devoluciones: QueryKeyValuesResponse
| QueryKeyValuesRequest | Descripción | Tipo |
|---|---|---|
| uuid | Identificador de base de datos | stri |
| Pagination (opcional) | PagingRequest {startkey: string, límite: long} | Paging Request |
| QueryKeyValuesResponse | Descripción | Tipo |
|---|---|---|
| valores de teclas | KeyValue {Key: String, Value: Uint8Array} | Lista (KeyValue) |
| Pagination (opcional) | PagingResponse {nextKey: String, Total: Long} | PaggingResponse |
Lea el conjunto completo de claves por dirección en el 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 )
);Devoluciones: QuerymykeysResponse
| QuerymykeysRequest | Descripción | Tipo |
|---|---|---|
| uuid | Identificador de base de datos | stri |
| DIRECCIÓN | Dirección bluzelle | stri |
| Pagination (opcional) | PagingRequest {startkey: string, límite: long} | Paging Request |
| Responsabilidad de consultas | Descripción | Tipo |
|---|---|---|
| llaves | Lista (cadena) | |
| Pagination (opcional) | PagingResponse {nextKey: String, Total: Long} | PaggingResponse |
Lea un valor de la base de datos.
response = await sdk . db . q . Read (
QueryReadRequest (
uuid = uuid ,
key = "myKey" ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Devoluciones: QueryReadResponse
| QueryReadRequest | Descripción | Tipo |
|---|---|---|
| uuid | Identificador de base de datos | stri |
| llave | stri |
| QueryReadResponse | Descripción | Tipo |
|---|---|---|
| valor | bytes |
Buscar por clave en el 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 ,
)Devuelve: QuerySearchResponse
| QuerySearchRequest | Descripción | Tipo |
|---|---|---|
| uuid | Identificador de base de datos | stri |
| búsqueda | Consulta para claves que comienzan o coinciden con la búsqueda de la búsqueda | stri |
| Pagination (opcional) | {startkey: string, límite: long} | Paging Request |
| QuerySearchResponse | Descripción | Tipo |
|---|---|---|
| valores de teclas | KeyValue {Key: String, Value: Uint8Array} | Lista (KeyValue) |
| Pagination (opcional) | {NextKey: String, Total: Long} | PaggingResponse |