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.)
لتوصيل المثيل الخاص بك بـ Bluzelle testnet ، يمكنك:
MINT حساب من خلال زيارة 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 ,
)ملاحظة: إذا كانت Gasprice و/أو Maxgas محددة منخفضة للغاية ، فقد يتم رفض أي معاملات بواسطة المدقق (على سبيل المثال ، تتطلب المعاملة غازًا أكثر من Maxgas المحدد ، أو أن Gasprice منخفضة جدًا لتغطية رسوم التحقق). الاقتراح الافتراضي لهذه الحقول أعلاه سوف يكفي.
ملاحظة: إذا كنت ترغب في تشغيل أمثلة في مجلد المكتبة ، فضع الرموز داخل ملف في دليل الجذر
ملاحظة: لكلا الإصدارين أولاً ، قم بإنشاء مثيل SDK ثم استخدم حلقة Asyncio لتشغيل البرنامج. لمزيد من التفاصيل حول هذا ، انظر المثال/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 التي تمثل القيمة المشفرة للبايت والتي تم الاستعلام عنها. للحصول على تمثيل السلسلة للقيمة ، استخدم Decode 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 )يمكن لـ 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" ,
)ملاحظة: إذا فشل أي واحدة من الرسائل في الوظيفة التي تم نقلها إلى Transaction ، فإن جميع الرسائل ستفشل ولن تلتزم بكتلة
إنشاء قيمة مفتاح في قاعدة البيانات.
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 ,
)إرجاع: msgcreateSponse (كائن فارغ)
| msgcreatequest | وصف | يكتب |
|---|---|---|
| الخالق | عنوان الموقع | شارع |
| 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 ,
)إرجاع: msgdeleteresponse (كائن فارغ)
| msgdeleterequest | وصف | يكتب |
|---|---|---|
| الخالق | عنوان الموقع | شارع |
| uuid | معرف قاعدة البيانات | شارع |
| مفتاح | مفتاح الحذف | شارع |
تجديد جميع عقود الإيجار من القيم الرئيسية في UUID المحددة.
response = await sdk . db . tx . DeleteAll ( creator = sample_creator , uuid = "myUuid" )
print ( response )إرجاع: وعد => 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 | معرف قاعدة البيانات | خيط |
| القيم الرئيسية | 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 (كائن فارغ)
| Msgreneweleaserequest | وصف | يكتب |
|---|---|---|
| الخالق | عنوان الموقع | شارع |
| 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 | معرف قاعدة البيانات | شارع |
| مفتاح | شارع | |
| قيمة | قيمة جديدة للتحديث إلى | بايت |
| بيانات التعريف | بايت | |
| إيجار | القيمة الرئيسية الحياة | إيجار |
*عقد الإيجار (ثواني = الرقم ، الدقائق = الرقم ، الساعات = الرقم ، الأيام = الرقم ، سنوات = رقم)
تنقص قيمة مفتاح في قاعدة البيانات: قم بإنشاء قيمة مفتاح إذا لم يكن المفتاح موجودًا ، فقم بتحديث قيمة المفتاح إذا كان المفتاح موجودًا
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 | وصف | يكتب |
|---|---|---|
| الخالق | عنوان الموقع | شارع |
| uuid | معرف قاعدة البيانات | شارع |
| مفتاح | شارع | |
| قيمة | بايت | |
| بيانات التعريف | بايت | |
| إيجار | القيمة الرئيسية الحياة | إيجار * |
*عقد الإيجار (ثواني = الرقم ، الدقائق = الرقم ، الساعات = الرقم ، الأيام = الرقم ، سنوات = رقم)
الاستعلام عن إجمالي عدد القيم الرئيسية في UUID المحددة.
await sdk . db . q . Count (
MsgCount ( uuid = "myUuid" ),
timeout = 3000 ,
metadata = None ,
credentials = None ,
wait_for_ready = True ,
compression = False ,
)عائدات: QueryCountSponse
| QueryCountrequest | وصف | يكتب |
|---|---|---|
| uuid | معرف قاعدة البيانات | شارع |
| QueryCountSponse | وصف | يكتب |
|---|---|---|
| عدد | عدد القيم الرئيسية في 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 ,
)عائدات: 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 ,
)عائدات: QuerygetNshorteStleaseSponse
| QuerygetNshortEnsLeaseRequest | وصف | يكتب |
|---|---|---|
| uuid | معرف قاعدة البيانات | شارع |
| عدد | عدد البطان الرئيسي للعودة | int |
| QuerygetNshorteStLeesSponse | وصف | يكتب |
|---|---|---|
| البطان المفتاح | keylease (مفتاح = سلسلة ، ثواني = رقم) | قائمة (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 = سلسلة ، الحد = طويل) | 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 ، الحد: طويل} | PagingRequest |
| QueryKeyValuesResponse | وصف | يكتب |
|---|---|---|
| القيم الرئيسية | 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 )
);عائدات: QueryMyKeysPonse
| QueryMyKeySrequest | وصف | يكتب |
|---|---|---|
| uuid | معرف قاعدة البيانات | شارع |
| عنوان | عنوان Bluzelle | شارع |
| ترقيم الصفحات (اختياري) | PagingRequest {StartKey: String ، الحد: طويل} | 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 | وصف | يكتب |
|---|---|---|
| القيم الرئيسية | keyvalue {key: string ، value: uint8array} | قائمة (keyvalue) |
| ترقيم الصفحات (اختياري) | {NextKey: String ، Total: Long} | PagingResponse |