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. (Требуется для получения pypi_token с веб -сайта https://pypi.org и добавления его в секреты репозитория GitHub.)
Чтобы подключить ваш экземпляр к Testnet Bluzelle, вы можете:
Mint Account, посетив https://client.sentry.testnet.private.bluzelle.com:1317/mint , который предоставит мнемонику и адрес. Это может занять некоторое время.
Проверьте свой баланс по адресу https://client.sentry.testnet.private.bluzelle.com:1317/bank/balances/buredress} . Если баланс вашей учетной записи составляет 0, Mint Другой счет, пока не покажет положительный баланс UBNT
Настройте экземпляр 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 и/или Maxgas слишком низкий, любые транзакции могут быть отклонены валидатором (например, транзакция требует большего газа, чем указано Maxgas, или Gasprice слишком низкий, чтобы покрыть сборы за валидатор). Предложения по умолчанию для этих полей, выше, будет достаточно.
Примечание. Если вы хотите запустить примеры в папке библиотеки, поместите коды в файл в корневом каталоге
Примечание. Для обеих версий сначала создайте экземпляр SDK, затем используйте цикл Asyncio для запуска программы. Более подробную информацию об этом см. Пример/Пример.py.
После настройки вашего SDK у вас будет доступ к различным модулям и их соответствующим методам.
sdk.[module].[q or tx or field].[Method](**kwargs)
Каждый метод принимает один параметр в качестве объекта (т.е. запрос) и возвращает объект (т.е. ответ). Чтобы увидеть типы запроса и ответов, см. Curium/Proto/[Module] для запросов и транзакций.
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, представляющий бат-кодируемое значение, которое было запрошено. Чтобы получить представление о значении, используйте New TextDecoder (). Decode (respr.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" ,
)ПРИМЕЧАНИЕ. Если какое -либо из сообщений не удалось в функции, переданной с транзакцией, то все сообщения не будут выполнены и не будут привержены блоку
Создайте ключевую ценность в базе данных.
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 ,
)Возвращает: msgcreaterSponse (пустой объект)
| Msgcreaterequest | Описание | Тип |
|---|---|---|
| Создатель | Адрес подписи | стр |
| uuid | Идентификатор базы данных | стр |
| ключ | стр | |
| ценить | байты | |
| метаданные | байты | |
| арендовать | Ключевая стоимость жизни | Арендовать * |
*Аренда (секунды = число, минуты = число, часы = номер, дни = номер, годы = номер)
Удалить значение ключа в базе данных.
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 ,
)Возвращает: msgdeleterSponse (пустой объект)
| MsgdeleteRequest | Описание | Тип |
|---|---|---|
| Создатель | Адрес подписи | стр |
| uuid | Идентификатор базы данных | стр |
| ключ | Ключ для удаления | стр |
Обновите все аренды ключевых значений в указанном UUID.
response = await sdk . db . tx . DeleteAll ( creator = sample_creator , uuid = "myUuid" )
print ( response )Возвращает: Ording => msgdeleteallresponse (пустой объект)
| Msgdeleteallrequest | Описание | Тип |
|---|---|---|
| Создатель | Адрес подписи | стр |
| uuid | Идентификатор базы данных | стр |
Обновите набор клавишных значений в указанном 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 | Идентификатор базы данных | нить |
| Keyvalues | 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 | Описание | Тип |
|---|---|---|
| Создатель | Адрес подписи | стр |
| uuid | Идентификатор базы данных | стр |
| ключ | Существующий ключ | стр |
| Нью -Кей | Новый ключ, используемый для переименования | стр |
Обновите аренду ключевой стоимости в базе данных.
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 ,
)Возвращает: msgrenewleaserSponse (пустой объект)
| MSGRENEWLEASEREQUEST | Описание | Тип |
|---|---|---|
| Создатель | Адрес подписи | стр |
| uuid | Идентификатор базы данных | стр |
| ключ | стр | |
| арендовать | Новая жизнь для ключей | Арендовать * |
*Аренда (секунды = число, минуты = число, часы = номер, дни = номер, годы = номер)
Обновите все аренды ключевых значений в указанном 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 | Описание | Тип |
|---|---|---|
| Создатель | Адрес подписи | стр |
| uuid | Идентификатор базы данных | стр |
| арендовать | Новая жизнь для всех ключевых значений | Арендовать * |
*Аренда (секунды = число, минуты = число, часы = номер, дни = номер, годы = номер)
Обновите значение ключа в базе данных.
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 | Описание | Тип |
|---|---|---|
| Создатель | Адрес подписи | стр |
| uuid | Идентификатор базы данных | стр |
| ключ | стр | |
| ценить | Новое значение для обновления | байты |
| метаданные | байты | |
| арендовать | Ключевая стоимость жизни | Арендовать |
*Аренда (секунды = число, минуты = число, часы = номер, дни = номер, годы = номер)
UpSert Ключевое значение в базе данных: Создайте значение клавиш, если ключ не существует, обновите значение клавиши, если ключ существует
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 (пустой объект)
| MSGUPSERTROQUEST | Описание | Тип |
|---|---|---|
| Создатель | Адрес подписи | стр |
| uuid | Идентификатор базы данных | стр |
| ключ | стр | |
| ценить | байты | |
| метаданные | байты | |
| арендовать | Ключевая стоимость жизни | Арендовать * |
*Аренда (секунды = число, минуты = число, часы = номер, дни = номер, годы = номер)
Запросите общее количество ключевых значений в указанном UUID.
await sdk . db . q . Count (
MsgCount ( uuid = "myUuid" ),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Возврат: QueryCountresponse
| QueryCountRequest | Описание | Тип |
|---|---|---|
| uuid | Идентификатор базы данных | стр |
| QueryCountresponse | Описание | Тип |
|---|---|---|
| считать | Количество ключевых значений в UUID | инт |
Получите оставшееся время аренды ключевой ценности.
response = await sdk . db . q . GetLease (
QueryGetLeaseRequest (
uuid = uuid ,
key = "myKey" ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Возврат: QueryGetLeaserSponse
| QueryGetLeasERequest | Описание | Тип |
|---|---|---|
| uuid | Идентификатор базы данных | стр |
| ключ | стр |
| QuerygetLeaserSponse | Описание | Тип |
|---|---|---|
| секунды | Оставшееся время аренды ключа | число |
Получите оставшееся время аренды ключевых значений.
response = await sdk . db . q . GetNShortestLeases (
QueryGetNShortestLeasesRequest (
uuid = uuid ,
num = 5 ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)Возврат: QuerygetNshortestLeasesResponse
| QuerygetNshortestLeasesRequest | Описание | Тип |
|---|---|---|
| uuid | Идентификатор базы данных | стр |
| численность | Количество клавиш для возврата | инт |
| QuerygetNshortestLeasesResponse | Описание | Тип |
|---|---|---|
| KeyLeases | Клавиш (key = string, seconds = number) | Список (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 | Идентификатор базы данных | стр |
| ключ | стр |
| 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 | Идентификатор базы данных | стр |
| страсть (необязательно) | PagingRequest (startKey = String, 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
| QueryKeyValuesRequest | Описание | Тип |
|---|---|---|
| uuid | Идентификатор базы данных | стр |
| страсть (необязательно) | PagingRequest {Startkey: String, Limit: Long} | PagingRequest |
| QueryKeyValuesResponse | Описание | Тип |
|---|---|---|
| Keyvalues | 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 )
);Возврат: QueryMekeySresponse
| QueryMyKeySrequest | Описание | Тип |
|---|---|---|
| uuid | Идентификатор базы данных | стр |
| адрес | Блюзель адрес | стр |
| страсть (необязательно) | 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 | Идентификатор базы данных | стр |
| ключ | стр |
| 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 | Идентификатор базы данных | стр |
| SearchString | Запрос для ключей, которые начинаются с или соответствуют SearchString | стр |
| страсть (необязательно) | {Startkey: String, Limit: Long} | PagingRequest |
| QuerySearchResponse | Описание | Тип |
|---|---|---|
| Keyvalues | Keyvalue {key: string, value: uint8array} | Список (Keyvalue) |
| страсть (необязательно) | {NextKey: String, Total: Long} | PagingResponse |