Bluzelle-Py 는 Bluzelle 데이터베이스 서비스에 액세스하는 데 사용할 수있는 파이썬 라이브러리입니다.
Python Library는 아직 패키지 관리자에 게시되지 않았으며 아래 지침을 설치하고 사용합니다.
$ # build the library
$ pip install " poetry==1.1.7 "
$ poetry config virtualenvs.create false
$ poetry install --no-interaction --no-ansi
$ pip install .새 릴리스 (새 태그 사용)를 PYPI 패키지에 배포하는 GitHub 조치가 있습니다. (https://pypi.org 웹 사이트에서 pypi_token을 얻고 Github 저장소 비밀에 추가해야합니다.)
인스턴스를 Bluzelle TestNet에 연결하려면 다음을 수행 할 수 있습니다.
https://client.sentry.testnet.private.bluzelle.com:1317/mint를 방문하여 계정을 선물하여 니모닉과 주소를 제공합니다. 시간이 걸릴 수 있습니다.
https://client.sentry.testnet.private.bluzelle.com:1317/bank/balances/ {Address} 에서 잔액을 확인하십시오. 계정 잔액이 0 인 경우 긍정적 인 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 ,
)참고 : 지정된 휘파람 및/또는 MaxGas가 너무 낮은 경우, 유효성 검사기에 의해 모든 트랜잭션이 거부 될 수 있습니다 (예 : 트랜잭션은 지정된 MaxGAS보다 더 많은 가스가 필요하거나 GASPRICE가 유효성을 충당하기에는 너무 낮습니다). 위 의이 필드에 대한 기본 제안으로 충분합니다.
참고 : 라이브러리 폴더에서 예제를 실행하려면 루트 디렉토리의 파일 안에 코드를 배치하십시오.
참고 : 두 버전 모두 먼저 SDK 인스턴스를 만듭니다. 그런 다음 Asyncio 루프를 사용하여 프로그램을 실행하십시오. 이 example/example.py를 참조하십시오.
SDK를 구성한 후에는 다양한 모듈과 해당 방법에 액세스 할 수 있습니다.
sdk.[module].[q or tx or field].[Method](**kwargs)
각 메소드는 단일 매개 변수를 객체 (즉, 요청)로 사용하고 객체 (즉, 응답)를 반환합니다. 요청 및 응답 유형을 보려면 쿼리 및 트랜잭션에 대해서는 Curium/Proto/[모듈]을 참조하십시오.
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입니다. 값의 문자열 표현을 얻으려면 새 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 )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 ,
)반환 : msgcreaterPonse (빈 개체)
| msgcreateretest | 설명 | 유형 |
|---|---|---|
| 창조자 | 서명자 주소 | str |
| uuid | 데이터베이스 식별자 | str |
| 열쇠 | str | |
| 값 | 바이트 | |
| 메타 데이터 | 바이트 | |
| 임차권 | 키 가치 수명 | 임대 * |
*임대 (seconds = 숫자, 숫자 = 숫자, 시간 = 숫자, days = 숫자, 연도 = 숫자)
데이터베이스에서 키 값을 삭제하십시오.
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 ,
)반환 : MSGDELETERESPONSE (빈 개체)
| msgdeleteRequest | 설명 | 유형 |
|---|---|---|
| 창조자 | 서명자 주소 | str |
| uuid | 데이터베이스 식별자 | str |
| 열쇠 | 삭제할 키 | str |
지정된 UUID의 키 값의 모든 임대를 갱신하십시오.
response = await sdk . db . tx . DeleteAll ( creator = sample_creator , uuid = "myUuid" )
print ( response )반환 : 약속 => msgdeleteallresponse (빈 개체)
| msgdeleteallrequest | 설명 | 유형 |
|---|---|---|
| 창조자 | 서명자 주소 | str |
| uuid | 데이터베이스 식별자 | str |
지정된 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 | 설명 | 유형 |
|---|---|---|
| 창조자 | 서명자 주소 | str |
| uuid | 데이터베이스 식별자 | str |
| 열쇠 | 기존 키 | str |
| 뉴키 | 이름을 바꾸는 데 사용되는 새로운 키 | str |
데이터베이스에서 키 가치의 임대를 갱신하십시오.
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 ,
)반환 : MSGRENEWLEASERESPONSE (빈 개체)
| msgrenewleaseerequest | 설명 | 유형 |
|---|---|---|
| 창조자 | 서명자 주소 | str |
| uuid | 데이터베이스 식별자 | str |
| 열쇠 | str | |
| 임차권 | 키 가치를위한 새로운 생명 스팬 | 임대 * |
*임대 (seconds = 숫자, 숫자 = 숫자, 시간 = 숫자, days = 숫자, 연도 = 숫자)
지정된 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 | 설명 | 유형 |
|---|---|---|
| 창조자 | 서명자 주소 | str |
| uuid | 데이터베이스 식별자 | str |
| 임차권 | 모든 주요 값에 대한 새로운 생명 스팬 | 임대 * |
*임대 (seconds = 숫자, 숫자 = 숫자, 시간 = 숫자, days = 숫자, 연도 = 숫자)
데이터베이스에서 키 값을 업데이트하십시오.
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 | 설명 | 유형 |
|---|---|---|
| 창조자 | 서명자 주소 | str |
| uuid | 데이터베이스 식별자 | str |
| 열쇠 | str | |
| 값 | 업데이트 할 새로운 가치 | 바이트 |
| 메타 데이터 | 바이트 | |
| 임차권 | 키 가치 수명 | 임차권 |
*임대 (seconds = 숫자, 숫자 = 숫자, 시간 = 숫자, days = 숫자, 연도 = 숫자)
데이터베이스에서 키 값을 업 sert : 키가 존재하지 않으면 키 값을 만듭니다. 키가 존재하는 경우 키 값을 업데이트하십시오.
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 (빈 개체)
| msgupsertrequest | 설명 | 유형 |
|---|---|---|
| 창조자 | 서명자 주소 | str |
| uuid | 데이터베이스 식별자 | str |
| 열쇠 | str | |
| 값 | 바이트 | |
| 메타 데이터 | 바이트 | |
| 임차권 | 키 가치 수명 | 임대 * |
*임대 (seconds = 숫자, 숫자 = 숫자, 시간 = 숫자, days = 숫자, 연도 = 숫자)
지정된 UUID의 총 키 값 수를 쿼리하십시오.
await sdk . db . q . Count (
MsgCount ( uuid = "myUuid" ),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)반환 : QueryCountResponse
| QueryCountRequest | 설명 | 유형 |
|---|---|---|
| uuid | 데이터베이스 식별자 | str |
| QueryCountResponse | 설명 | 유형 |
|---|---|---|
| 세다 | UUID의 키 값 수 | int |
키 가치의 나머지 임대 시간을 얻으십시오.
response = await sdk . db . q . GetLease (
QueryGetLeaseRequest (
uuid = uuid ,
key = "myKey" ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)반환 : QueryGetLeaserPonse
| QueryGetLeaseRequest | 설명 | 유형 |
|---|---|---|
| uuid | 데이터베이스 식별자 | str |
| 열쇠 | str |
| QueryGetLeaserPonse | 설명 | 유형 |
|---|---|---|
| 초 | 키 가치의 나머지 임대 시간 | 숫자 |
주요 값의 나머지 임대 시간을 얻으십시오.
response = await sdk . db . q . GetNShortestLeases (
QueryGetNShortestLeasesRequest (
uuid = uuid ,
num = 5 ,
),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)반환 : QueryGetnShortestLeasesErsponse
| querygetnshortestleaseSrequest | 설명 | 유형 |
|---|---|---|
| uuid | 데이터베이스 식별자 | str |
| 숫자 | 반환 할 키일아아아아아즈 수 | int |
| QueryGetNshortStleasesResponse | 설명 | 유형 |
|---|---|---|
| 키일아스 | keyylease (key = string, seconds = number) | 목록 (keyyles) |
지정된 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 | 데이터베이스 식별자 | str |
| 열쇠 | str |
| 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 | 데이터베이스 식별자 | str |
| 페이지 매김 (선택 사항) | 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 | 데이터베이스 식별자 | str |
| 페이지 매김 (선택 사항) | PagingRequest {startkey : 문자열, 한계 : long} | PagingRequest |
| QueryKeyValuesResponse | 설명 | 유형 |
|---|---|---|
| keyvalues | keyValue {키 : 문자열, 값 : 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 )
);반환 : QuerymyKeysResponse
| QuerymyKeysRequest | 설명 | 유형 |
|---|---|---|
| uuid | 데이터베이스 식별자 | str |
| 주소 | Bluzelle 주소 | str |
| 페이지 매김 (선택 사항) | PagingRequest {startkey : 문자열, 한계 : long} | PagingRequest |
| QuerymyKeysResponse | 설명 | 유형 |
|---|---|---|
| 열쇠 | List (String) | |
| 페이지 매김 (선택 사항) | 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 | 데이터베이스 식별자 | str |
| 열쇠 | str |
| 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 | 데이터베이스 식별자 | str |
| SearchString | SearchString으로 시작하거나 일치하는 키에 대한 쿼리 | str |
| 페이지 매김 (선택 사항) | {startkey : 문자열, 한계 : long} | PagingRequest |
| QuerySearchResponse | 설명 | 유형 |
|---|---|---|
| keyvalues | keyValue {키 : 문자열, 값 : uint8array} | 목록 (keyvalue) |
| 페이지 매김 (선택 사항) | {Nextkey : String, Total : Long} | PagingResponse |