Bluzelle-Py est une bibliothèque Python qui peut être utilisée pour accéder au service de base de données Bluzelle.
La bibliothèque Python n'est pas encore publiée sur aucun gestionnaire de packages, pour installer et utiliser Suivez les instructions ci-dessous:
$ # build the library
$ pip install " poetry==1.1.7 "
$ poetry config virtualenvs.create false
$ poetry install --no-interaction --no-ansi
$ pip install .Il existe une action GitHub qui déploie de nouvelles versions (en utilisant de nouvelles balises) dans les packages PYPI. (Requis pour obtenir un PYPI_TOKINE sur le site Web https://pypi.org et l'ajout aux secrets du référentiel GitHub.)
Pour connecter votre instance au Bluzelle Testnet, vous pouvez:
Mint un compte en visitant https://client.sentry.testnet.private.bluzelle.com:1317/mint , qui fournira un mnémonique et une adresse. Cela peut prendre un certain temps.
Vérifiez votre solde sur https://client.sentry.testnet.private.bluzelle.com:1317/bank/balances/{address} . Si le solde de votre compte est de 0, menthe un autre compte jusqu'à ce qu'un solde UBNT positif se manifeste
Configurez votre instance SDK avec les options suivantes:
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 ,
)Remarque: Si le Gasprice et / ou Maxgas spécifié est trop faible, les transactions peuvent être rejetées par un validateur (par exemple, une transaction nécessite plus de gaz que Maxgas spécifié, ou si le gaz est trop faible pour couvrir les frais de validateur). La suggestion par défaut pour ces champs ci-dessus suffira.
Remarque: Si vous souhaitez exécuter des exemples dans le dossier de la bibliothèque, placez les codes dans un fichier dans le répertoire racine
Remarque: Pour les deux versions, créez d'abord une instance SDK, utilisez une boucle Asyncio pour exécuter le programme. Pour plus de détails à ce sujet, voir l'exemple / exemple.py.
Après avoir configuré votre SDK, vous aurez accès à divers modules et à leurs méthodes correspondantes.
sdk.[module].[q or tx or field].[Method](**kwargs)
Chaque méthode prend un seul paramètre en tant qu'objet (c'est-à-dire une demande) et renvoie un objet (IE Response). Pour voir les types de demande et de réponse, consultez le Curium / Proto / [Module] pour les requêtes et les transactions.
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 )* Remarque: la réponse est un Uint8Array représentant la valeur codée par les octets qui avait été interrogée. Pour obtenir la représentation de chaîne de la valeur, utilisez un nouveau 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 )Le SDK peut également envoyer des transactions à la chaîne. Chaque module a une méthode TX pour envoyer divers messages de transaction.
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 ,
)* Remarque: le SDK signale et envoie la transaction, donc l'adresse du signataire doit correspondre au créateur de la transaction. Sinon, une erreur sera lancée
** Remarque: Voir Bluzelle.codec.crud.lease_pb2 pour voir l'interface de location
Enveloppez plusieurs messages dans une seule transaction.
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" ,
)Remarque: Si l'un des messages échoue dans la fonction transmise à WithTransaction, alors tous les messages échoueront et ne seront pas engagés dans un bloc
Créez une valeur clé dans la base de données.
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 ,
)Renvoie: msgcreareponse (objet vide)
| Msgcreareequest | Description | Taper |
|---|---|---|
| créateur | Adresse du signataire | Str |
| uuid | Identifiant de base de données | Str |
| clé | Str | |
| valeur | octets | |
| métadonnées | octets | |
| location | Valeur clé. | Location * |
* Location (secondes = nombre, minutes = nombre, heures = nombre, jours = nombre, années = nombre)
Supprimez une valeur clé dans la base de données.
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 ,
)Renvoie: msgdeleterSponse (objet vide)
| Msgdeleterequest | Description | Taper |
|---|---|---|
| créateur | Adresse du signataire | Str |
| uuid | Identifiant de base de données | Str |
| clé | Clé pour supprimer | Str |
Renouveler tous les baux des valeurs clés dans l'UUID spécifié.
response = await sdk . db . tx . DeleteAll ( creator = sample_creator , uuid = "myUuid" )
print ( response )Renvoie: promesse => msgdeletealLResponse (objet vide)
| Msgdeleteallrequest | Description | Taper |
|---|---|---|
| créateur | Adresse du signataire | Str |
| uuid | Identifiant de base de données | Str |
Mettez à jour un ensemble de valeurs clés dans l'UUID spécifié.
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 ),
),
],
)Renvoie: MsgMultiupDateResponse (objet vide)
| Msgmultiupdaterequest | Description | Taper |
|---|---|---|
| créateur | Adresse du signataire | chaîne |
| uuid | Identifiant de base de données | chaîne |
| clés | KeyValuelease (clé: STR, valeur: octets, bail: bail) | KeyValuelease [] |
Renouveler le bail d'une valeur clé dans la base de données.
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 ,
)Renvoie: MgrenamePonse (objet vide)
| Mgrénamerequest | Description | Taper |
|---|---|---|
| créateur | Adresse du signataire | Str |
| uuid | Identifiant de base de données | Str |
| clé | Clé existante | Str |
| newcy | Nouvelle clé utilisée pour renommer | Str |
Renouveler le bail d'une valeur clé dans la base de données.
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 ,
)Renvoie: MGRENEWLEASERESPONSE (objet vide)
| MGRENEWLEASEREQUEST | Description | Taper |
|---|---|---|
| créateur | Adresse du signataire | Str |
| uuid | Identifiant de base de données | Str |
| clé | Str | |
| location | Nouvelle vie de vie pour la valeur clé | Location * |
* Location (secondes = nombre, minutes = nombre, heures = nombre, jours = nombre, années = nombre)
Renouveler tous les baux des valeurs clés dans l'UUID spécifié.
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 ,
)Renvoie: MGRENEWLASESAT ALL
| MGRENEWLASEASELLEQUEST | Description | Taper |
|---|---|---|
| créateur | Adresse du signataire | Str |
| uuid | Identifiant de base de données | Str |
| location | Nouveau-la vie pour toutes les valeurs clés | Location * |
* Location (secondes = nombre, minutes = nombre, heures = nombre, jours = nombre, années = nombre)
Mettez à jour une valeur clé dans la base de données.
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 ,
)Renvoie: msGupDateResponse (objet vide)
| MsGupdateRequest | Description | Taper |
|---|---|---|
| créateur | Adresse du signataire | Str |
| uuid | Identifiant de base de données | Str |
| clé | Str | |
| valeur | Nouvelle valeur à mettre à jour | octets |
| métadonnées | octets | |
| location | Valeur clé. | Location |
* Location (secondes = nombre, minutes = nombre, heures = nombre, jours = nombre, années = nombre)
Upser une valeur clé dans la base de données: créez une valeur de clé Si la clé n'existe pas, mettez à jour la valeur de clé si la clé existe
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 ,
)Renvoie: msGupsertResponse (objet vide)
| MsGupsertRequest | Description | Taper |
|---|---|---|
| créateur | Adresse du signataire | Str |
| uuid | Identifiant de base de données | Str |
| clé | Str | |
| valeur | octets | |
| métadonnées | octets | |
| location | Valeur clé. | Location * |
* Location (secondes = nombre, minutes = nombre, heures = nombre, jours = nombre, années = nombre)
Interrogez le nombre total de valeurs clés dans l'UUID spécifié.
await sdk . db . q . Count (
MsgCount ( uuid = "myUuid" ),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Renvoie: QuerycounTResponse
| QuerycountRequest | Description | Taper |
|---|---|---|
| uuid | Identifiant de base de données | Str |
| QuerycounTResponse | Description | Taper |
|---|---|---|
| compter | Nombre de valeurs clés dans l'UUID | int |
Obtenez le temps de location restant d'une valeur clé.
response = await sdk . db . q . GetLease (
QueryGetLeaseRequest (
uuid = uuid ,
key = "myKey" ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Renvoie: QueryGetLeaseResponse
| Querygetleaserequest | Description | Taper |
|---|---|---|
| uuid | Identifiant de base de données | Str |
| clé | Str |
| QuerygetleaseResponse | Description | Taper |
|---|---|---|
| secondes | Temps de location restant de la valeur clé | nombre |
Obtenez le temps de location restant d'une valeur clé.
response = await sdk . db . q . GetNShortestLeases (
QueryGetNShortestLeasesRequest (
uuid = uuid ,
num = 5 ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Renvoie: QueryGetNShortestleaseaseResponse
| Querygetnshortestleasesrequest | Description | Taper |
|---|---|---|
| uuid | Identifiant de base de données | Str |
| nobs | Nombre de keyleases à retourner | int |
| QueryGetNShOrestleaseSonSponse | Description | Taper |
|---|---|---|
| clés | Keylease (key = string, seconds = nombre) | Liste (Keylease) |
Vérifiez si une clé existe dans l'UUID spécifié.
await sdk . db . q . Has (
MsgHas (( uuid = "myUuid" ), ( key = "myKey" )),
( timeout = 3000 ),
( metadata = None ),
( credentials = None ),
( wait_for_ready = True ),
( compression = False )
);Renvoie: QueryhasResponse
| Queryhasrequest | Description | Taper |
|---|---|---|
| uuid | Identifiant de base de données | Str |
| clé | Str |
| Requête | Description | Taper |
|---|---|---|
| a | vrai si la clé existe dans uuid; Faux autrement | bool |
Lisez l'ensemble complet des clés dans l'UUID spécifié. ### 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 ,
)Renvoie: QueryKeysResponse
| QueryKeysRequest | Description | Taper |
|---|---|---|
| uuid | Identifiant de base de données | Str |
| Pagination (facultative) | PAGINGREQUEST (startKey = String, limit = long) | Pagingrequest |
| QueryKeysResponse | Description | Taper |
|---|---|---|
| clés | Liste (STR) | |
| Pagination (facultative) | PAGINGRESPONSE {NextKey: String, Total: Long} | Pagination |
Lisez l'ensemble complet des valeurs clés dans l'UUID spécifié.
response = await sdk . db . q . KeyValues (
QueryKeyValuesRequest ( uuid = uuid ),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Renvoie: QueryKeyValuesResponse
| QueryKeyValuesRequest | Description | Taper |
|---|---|---|
| uuid | Identifiant de base de données | Str |
| Pagination (facultative) | PAGINGREQUEST {startKey: String, Limit: Long} | Pagingrequest |
| QueryKeyValuesResponse | Description | Taper |
|---|---|---|
| clés | KeyValue {key: string, valeur: uint8Array} | Liste (KeyValue) |
| Pagination (facultative) | PAGINGRESPONSE {NextKey: String, Total: Long} | Pagination |
Lisez l'ensemble complet des clés par adresse dans l'UUID spécifié. ### HHIO
await sdk . db . q . Keys (
MsgKeys (( uuid = "myUuid" ), ( address = sample_creator )),
( timeout = 3000 ),
( metadata = None ),
( credentials = None ),
( wait_for_ready = True ),
( compression = False )
);Renvoie: QueryMykeysResponse
| Querymykeysrequest | Description | Taper |
|---|---|---|
| uuid | Identifiant de base de données | Str |
| adresse | Adresse Bluzelle | Str |
| Pagination (facultative) | PAGINGREQUEST {startKey: String, Limit: Long} | Pagingrequest |
| QuerymykeysResponse | Description | Taper |
|---|---|---|
| clés | liste (chaîne) | |
| Pagination (facultative) | PAGINGRESPONSE {NextKey: String, Total: Long} | Pagination |
Lisez une valeur de la base de données.
response = await sdk . db . q . Read (
QueryReadRequest (
uuid = uuid ,
key = "myKey" ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Renvoie: QueryreadResponse
| QueryreadRequest | Description | Taper |
|---|---|---|
| uuid | Identifiant de base de données | Str |
| clé | Str |
| QueryreadResponse | Description | Taper |
|---|---|---|
| valeur | octets |
Recherche par clé dans l'UUID spécifié.
response = await sdk . db . q . Search (
QuerySearchRequest (
uuid = uuid ,
searchString = "s" ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Renvoie: QuerysearchResponse
| QuerysearchRequest | Description | Taper |
|---|---|---|
| uuid | Identifiant de base de données | Str |
| recherche | requête pour les clés qui commencent par ou correspondent à la recherche | Str |
| Pagination (facultative) | {startKey: String, limite: long} | Pagingrequest |
| QuerysearchResponse | Description | Taper |
|---|---|---|
| clés | KeyValue {key: string, valeur: uint8Array} | Liste (KeyValue) |
| Pagination (facultative) | {NextKey: String, Total: Long} | Pagination |