Bluzelle-Py ist eine Python-Bibliothek, mit der auf den Bluzelle-Datenbankdienst zugreifen kann.
Die Python -Bibliothek ist noch in keinem Paketmanager veröffentlicht, um die folgenden Anweisungen zu installieren und zu verwenden:
$ # build the library
$ pip install " poetry==1.1.7 "
$ poetry config virtualenvs.create false
$ poetry install --no-interaction --no-ansi
$ pip install .Es gibt eine GitHub -Aktion, die neue Releases (mit neuen Tags) für die PYPI -Pakete bereitstellt. (Erforderlich, um eine pypi_token von der https://pypi.org -Website zu erhalten und den Github -Repository -Geheimnissen hinzuzufügen.)
Um Ihre Instanz mit dem Bluzelle -Test zu verbinden, können Sie:
Münzen ein Konto unter https://client.sentry.testnet.private.bluzelle.com:1317/mint , das eine mnemonische und eine Adresse liefert. Dies kann eine Weile dauern.
Überprüfen Sie Ihren Restbetrag unter https://client.sentry.testnet.private.bluzelle.com:1317/bank/balances/ <address} . Wenn Ihr Kontostand 0 ist, mint ein anderes Konto, bis ein positiver UBNT -Saldo angezeigt wird
Konfigurieren Sie Ihre SDK -Instanz mit den folgenden Optionen:
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 ,
)HINWEIS: Wenn das angegebene Gaspreis und/oder Maxgas zu niedrig ist, können alle Transaktionen von einem Validator abgelehnt werden (z. B. eine Transaktion erfordert mehr Gas als die angegebenen Maxgas, oder das Gasprice ist zu niedrig, um die Gebühren für die Gültigkeiten zu decken). Der Standardvorschlag für diese oben genannten Felder reicht aus.
Hinweis: Wenn Sie Beispiele im Ordner Bibliothek ausführen möchten, platzieren Sie die Codes in einer Datei im Stammverzeichnis
Hinweis: Für beide Versionen erstellen Sie zuerst eine SDK -Instanz und verwenden Sie dann eine Asyncio -Schleife, um das Programm auszuführen. Weitere Informationen zu diesem Beispiel/Beispiel.Py.
Nach dem Konfigurieren Ihres SDK haben Sie Zugriff auf verschiedene Module und ihre entsprechenden Methoden.
sdk.[module].[q or tx or field].[Method](**kwargs)
Jede Methode nimmt einen einzelnen Parameter als Objekt (dh Anforderung) an und gibt ein Objekt zurück (dh Antwort). Um die Anforderungs- und Antworttypen anzuzeigen, finden Sie im Curium/Proto/[Modul] für Abfragen und Transaktionen.
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 )*Hinweis: Die Antwort ist ein Uint8Array, das den abfragen von Bytecodierten Wert darstellt. Verwenden Sie neue TextDecoder (). Decodode (resp.Value), um die String-Darstellung des Wertes zu erhalten, verwenden Sie neue TextDecoder ().
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 )Der SDK kann auch Transaktionen an die Kette senden. Jedes Modul verfügt über eine TX -Methode zum Senden verschiedener Transaktionsnachrichten.
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 ,
)*Hinweis: Der SDK unterschreibt und sendet die Transaktion, sodass die Unterzeichneradresse mit dem Ersteller der Transaktion übereinstimmen muss. Andernfalls wird ein Fehler geworfen
** Hinweis: Siehe Bluzelle.Codec.crud.Lease_PB2, um die Leasingschnittstelle anzuzeigen
Wickeln Sie mehrere Nachrichten in eine einzelne Transaktion ein.
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" ,
)HINWEIS: Wenn eine der Nachrichten in der an withtransaction übergebenen Funktion fehlschlägt, scheitern alle Nachrichten und werden nicht zu einem Block verpflichtet
Erstellen Sie einen Schlüsselwert in der Datenbank.
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 ,
)Rückgaben: MSGCREEResponse (leeres Objekt)
| Msgcreferequest | Beschreibung | Typ |
|---|---|---|
| Schöpfer | Unterzeichneradresse | str |
| Uuid | Datenbankkennung | str |
| Schlüssel | str | |
| Wert | Bytes | |
| Metadaten | Bytes | |
| mieten | Schlüsselwert-Lebens-Span | Mietvertrag * |
*Leasing (Sekunden = Anzahl, Minuten = Anzahl, Stunden = Anzahl, Tage = Zahl, Jahre = Zahl)
Löschen Sie einen Schlüsselwert in der Datenbank.
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 ,
)Rückgaben: MSGDeletersponse (leeres Objekt)
| MsgDeletRequest | Beschreibung | Typ |
|---|---|---|
| Schöpfer | Unterzeichneradresse | str |
| Uuid | Datenbankkennung | str |
| Schlüssel | Schlüssel zum Löschen | str |
Erneuern Sie alle Mietverträge von Schlüsselwerten in der angegebenen UUID.
response = await sdk . db . tx . DeleteAll ( creator = sample_creator , uuid = "myUuid" )
print ( response )Rückgaben: Promise => MsgDeletAllresponse (leeres Objekt)
| MsgDeletAllRequest | Beschreibung | Typ |
|---|---|---|
| Schöpfer | Unterzeichneradresse | str |
| Uuid | Datenbankkennung | str |
Aktualisieren Sie einen Satz von Schlüsselwerten in der angegebenen 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 ),
),
],
)Rückgaben: MSGMULTIUPDATEERPROSON (leeres Objekt)
| MsgmultiUpdateRequest | Beschreibung | Typ |
|---|---|---|
| Schöpfer | Unterzeichneradresse | Saite |
| Uuid | Datenbankkennung | Saite |
| Schlüsselwerte | KeyValuelase (Schlüssel: STR, Wert: Bytes, Leasing: Leasing) | Keyvaluelase [] |
Erneuern Sie den Mietvertrag eines Schlüsselwerts in der Datenbank.
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 ,
)Rückgaben: msgrenameresponse (leeres Objekt)
| Msgrenamerekest | Beschreibung | Typ |
|---|---|---|
| Schöpfer | Unterzeichneradresse | str |
| Uuid | Datenbankkennung | str |
| Schlüssel | Vorhandener Schlüssel | str |
| Newkey | Neuer Schlüssel, der früher umbenannt wurde | str |
Erneuern Sie den Mietvertrag eines Schlüsselwerts in der Datenbank.
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 ,
)Rückgaben: MsgrenewleaserePonse (leeres Objekt)
| MsgrenewleaseRequest | Beschreibung | Typ |
|---|---|---|
| Schöpfer | Unterzeichneradresse | str |
| Uuid | Datenbankkennung | str |
| Schlüssel | str | |
| mieten | Neue Lebensspanner für Schlüsselwert | Mietvertrag * |
*Leasing (Sekunden = Anzahl, Minuten = Anzahl, Stunden = Anzahl, Tage = Zahl, Jahre = Zahl)
Erneuern Sie alle Mietverträge von Schlüsselwerten in der angegebenen 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 ,
)Rückgabe: MsgrenewleaseSallResponse (leeres Objekt)
| MsgrenewleasesAllrequest | Beschreibung | Typ |
|---|---|---|
| Schöpfer | Unterzeichneradresse | str |
| Uuid | Datenbankkennung | str |
| mieten | Neue Lebensspanne für alle Schlüsselwerte | Mietvertrag * |
*Leasing (Sekunden = Anzahl, Minuten = Anzahl, Stunden = Anzahl, Tage = Zahl, Jahre = Zahl)
Aktualisieren Sie einen Schlüsselwert in der Datenbank.
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 ,
)Rückgaben: MSGUPDETEREPHE (leeres Objekt)
| MSGUPDATEREQUEST | Beschreibung | Typ |
|---|---|---|
| Schöpfer | Unterzeichneradresse | str |
| Uuid | Datenbankkennung | str |
| Schlüssel | str | |
| Wert | Neuer Wert zu aktualisieren auf | Bytes |
| Metadaten | Bytes | |
| mieten | Schlüsselwert-Lebens-Span | Mieten |
*Leasing (Sekunden = Anzahl, Minuten = Anzahl, Stunden = Anzahl, Tage = Zahl, Jahre = Zahl)
Stöbern Sie in der Datenbank einen Schlüsselwert: Erstellen Sie einen Schlüsselwert Wenn der Schlüssel nicht vorhanden ist, aktualisieren Sie den Schlüsselwert, wenn der Schlüssel vorhanden ist
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 ,
)Rückgabe: MsgUpSerTePronse (leeres Objekt)
| MSGUPSERTREQUEST | Beschreibung | Typ |
|---|---|---|
| Schöpfer | Unterzeichneradresse | str |
| Uuid | Datenbankkennung | str |
| Schlüssel | str | |
| Wert | Bytes | |
| Metadaten | Bytes | |
| mieten | Schlüsselwert-Lebens-Span | Mietvertrag * |
*Leasing (Sekunden = Anzahl, Minuten = Anzahl, Stunden = Anzahl, Tage = Zahl, Jahre = Zahl)
Fragen Sie die Gesamtzahl der Schlüsselwerte in der angegebenen UUID ab.
await sdk . db . q . Count (
MsgCount ( uuid = "myUuid" ),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Rückgabe: QueryCountePonse
| QueryCountrequest | Beschreibung | Typ |
|---|---|---|
| Uuid | Datenbankkennung | str |
| QueryCountePonse | Beschreibung | Typ |
|---|---|---|
| zählen | Anzahl der Schlüsselwerte in der UUID | int |
Holen Sie sich die verbleibende Mietzeit eines Schlüsselwerts.
response = await sdk . db . q . GetLease (
QueryGetLeaseRequest (
uuid = uuid ,
key = "myKey" ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Rückgaben: QueryGetleaserePonse
| QueryGetleaseRequest | Beschreibung | Typ |
|---|---|---|
| Uuid | Datenbankkennung | str |
| Schlüssel | str |
| QueryGetleaserePonse | Beschreibung | Typ |
|---|---|---|
| Sekunden | Verbleibende Leasingzeit des Schlüsselwerts | Nummer |
Holen Sie sich die verbleibende Mietzeit eines Schlüsselwerte.
response = await sdk . db . q . GetNShortestLeases (
QueryGetNShortestLeasesRequest (
uuid = uuid ,
num = 5 ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Rückgabe: QueryGetNshortEsSeSesponse
| QueryGetnshortEsSeSeRequest | Beschreibung | Typ |
|---|---|---|
| Uuid | Datenbankkennung | str |
| num | Anzahl der Keyleases, die zurückgegeben werden sollen | int |
| QueryGetnshortEsTleasesResponse | Beschreibung | Typ |
|---|---|---|
| Keyleases | KeyLease (Schlüssel = String, Sekunden = Zahl) | Liste (Keylease) |
Überprüfen Sie, ob in der angegebenen UUID ein Schlüssel vorhanden ist.
await sdk . db . q . Has (
MsgHas (( uuid = "myUuid" ), ( key = "myKey" )),
( timeout = 3000 ),
( metadata = None ),
( credentials = None ),
( wait_for_ready = True ),
( compression = False )
);Rückgabe: QueryHasResponse
| QueryHasRequest | Beschreibung | Typ |
|---|---|---|
| Uuid | Datenbankkennung | str |
| Schlüssel | str |
| Queryhasresponse | Beschreibung | Typ |
|---|---|---|
| hat | wahr, wenn der Schlüssel in uUid existiert; ansonsten falsch | bool |
Lesen Sie den vollständigen Schlüsselsatz in der angegebenen 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 ,
)Rückgabe: QueryKeysResponse
| QueryKeysRequest | Beschreibung | Typ |
|---|---|---|
| Uuid | Datenbankkennung | str |
| Paginierung (optional) | PagingRequest (StartKey = String, Limit = Long) | PagingRequest |
| QueryKeysResponse | Beschreibung | Typ |
|---|---|---|
| Schlüssel | Liste (str) | |
| Paginierung (optional) | PagingResponse {NextKey: String, Total: Long} | PagingResponse |
Lesen Sie den vollständigen Satz der Schlüsselwerte in der angegebenen UUID.
response = await sdk . db . q . KeyValues (
QueryKeyValuesRequest ( uuid = uuid ),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Rückgabe: QueryKeyValuesResponse
| QueryKeyValueSequest | Beschreibung | Typ |
|---|---|---|
| Uuid | Datenbankkennung | str |
| Paginierung (optional) | PagingRequest {StartKey: String, Limit: Long} | PagingRequest |
| QueryKeyValuesResponse | Beschreibung | Typ |
|---|---|---|
| Schlüsselwerte | KeyValue {Schlüssel: String, Wert: Uint8Array} | Liste (KeyValue) |
| Paginierung (optional) | PagingResponse {NextKey: String, Total: Long} | PagingResponse |
Lesen Sie den vollständigen Schlüssel der Schlüssel per Adresse in der angegebenen 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 )
);Rückgaben: QuerymykeysResponse
| QueryMyKeysRequest | Beschreibung | Typ |
|---|---|---|
| Uuid | Datenbankkennung | str |
| Adresse | Bluzelle Adresse | str |
| Paginierung (optional) | PagingRequest {StartKey: String, Limit: Long} | PagingRequest |
| QueryMyKeysResponse | Beschreibung | Typ |
|---|---|---|
| Schlüssel | Liste (Zeichenfolge) | |
| Paginierung (optional) | PagingResponse {NextKey: String, Total: Long} | PagingResponse |
Lesen Sie einen Wert aus der Datenbank.
response = await sdk . db . q . Read (
QueryReadRequest (
uuid = uuid ,
key = "myKey" ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Rückgabe: QueryReadResponse
| QueryReadRequest | Beschreibung | Typ |
|---|---|---|
| Uuid | Datenbankkennung | str |
| Schlüssel | str |
| QueryReadResponse | Beschreibung | Typ |
|---|---|---|
| Wert | Bytes |
Suche nach Schlüssel in der angegebenen UUID.
response = await sdk . db . q . Search (
QuerySearchRequest (
uuid = uuid ,
searchString = "s" ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Rückgabe: QuerysearchResponse
| QuerysearchRequest | Beschreibung | Typ |
|---|---|---|
| Uuid | Datenbankkennung | str |
| Suchstring | Abfragen nach Schlüssel, die mit SearchString beginnen oder übereinstimmen | str |
| Paginierung (optional) | {StartKey: String, Limit: Long} | PagingRequest |
| QuerysearchResponse | Beschreibung | Typ |
|---|---|---|
| Schlüsselwerte | KeyValue {Schlüssel: String, Wert: Uint8Array} | Liste (KeyValue) |
| Paginierung (optional) | {NextKey: String, Total: Long} | PagingResponse |