استخدام Shelve لحفظ الكائنات في Python

click fraud protection

Shelve هي وحدة Python قوية لاستمرارية الكائن. عندما تقوم بتخزين كائن ما ، يجب عليك تعيين مفتاح تُعرف به قيمة الكائن. بهذه الطريقة ، يصبح ملف الرفوف قاعدة بيانات للقيم المخزنة ، يمكن الوصول إلى أي منها في أي وقت.

رمز عينة لـ Shelve في Python

لوضع كائن على الرف ، قم أولاً باستيراد الوحدة النمطية ثم قم بتعيين قيمة الكائن على النحو التالي:

 رفوف الاستيراد 
قاعدة البيانات = shelve.open (filename.suffix)
الكائن = الكائن ()
قاعدة البيانات ['key'] = الكائن

إذا كنت تريد الاحتفاظ بقاعدة بيانات للأسهم ، على سبيل المثال ، يمكنك تعديل الكود التالي:

 رفوف الاستيراد 
stockvalues_db = shelve.open ('stockvalues.db')
object_ibm = Values.ibm ()
stockvalues_db ['ibm'] = object_ibm
object_vmw = Values.vmw ()
stockvalues_db ['vmw'] = object_vmw
object_db = Values.db ()
stockvalues_db ['db'] = object_db

تم فتح "قيم الأسهم. db" بالفعل ، لا تحتاج إلى فتحها مرة أخرى. بدلاً من ذلك ، يمكنك فتح قواعد بيانات متعددة في وقت واحد ، والكتابة لكل منها حسب الرغبة ، والمغادرة بيثون لإغلاقها عند انتهاء البرنامج. يمكنك ، على سبيل المثال ، الاحتفاظ بقاعدة بيانات منفصلة لأسماء كل رمز ، مع إلحاق ما يلي بالرمز السابق:

instagram viewer
 ## على افتراض أن الرف قد تم استيراده بالفعل 
stocknames_db = shelve.open ('stocknames.db')
objectname_ibm = Names.ibm ()
stocknames_db ['ibm'] = objectname_ibm
objectname_vmw = Names.vmw ()
stocknames_db ['vmw'] = objectname_vmw
objectname_db = Names.db ()
stocknames_db ['db'] = objectname_db

لاحظ أن أي تغيير في اسم أو لاحقة ملف قاعدة البيانات يشكل ملفًا مختلفًا ، وبالتالي قاعدة بيانات مختلفة.

والنتيجة هي ملف قاعدة بيانات ثاني يحتوي على القيم المعطاة. على عكس معظم الملفات المكتوبة بتنسيقات ذات أنماط ذاتية ، فإن قواعد البيانات المحفوظة تم الحفظ في شكل ثنائي.

بعد كتابة البيانات في الملف ، يمكن استرجاعها في أي وقت. إذا كنت تريد استعادة البيانات في جلسة لاحقة ، فأنت تعيد فتح الملف. إذا كانت الجلسة نفسها ، فما عليك سوى استدعاء القيمة ؛ رفوف ملفات قاعدة البيانات يتم فتحها في وضع القراءة والكتابة. وفيما يلي الصيغة الأساسية لتحقيق ذلك:

 رفوف الاستيراد 
قاعدة البيانات = shelve.open (filename.suffix)
كائن = قاعدة بيانات [مفتاح]

لذا فإن عينة من المثال السابق سيكون نصها كما يلي:

 رفوف الاستيراد 
stockname_file = shelve.open ('stocknames.db')
stockname_ibm = stockname_file ['ibm']
stockname_db = stockname_file ['db']

اعتبارات مع Shelve

من المهم ملاحظة أن قاعدة البيانات تظل مفتوحة حتى تغلقها (أو حتى ينتهي البرنامج). لذلك ، إذا كنت تكتب برنامجًا بأي حجم ، فأنت تريد إغلاق قاعدة البيانات بعد العمل معها. خلاف ذلك ، فإن قاعدة البيانات بأكملها (وليس فقط القيمة التي تريدها) موجودة في الذاكرة وتستهلك موارد الحوسبة.

لإغلاق ملف رف ، استخدم بناء الجملة التالي:

 قاعدة البيانات. close () 

إذا تم دمج جميع أمثلة التعليمات البرمجية أعلاه في برنامج واحد ، فسيكون لدينا ملفا قاعدة بيانات مفتوحان ويستهلكان الذاكرة في هذه المرحلة. لذلك ، بعد قراءة أسماء الأسهم في المثال السابق ، يمكنك بعد ذلك إغلاق كل قاعدة بيانات على النحو التالي:

 stockvalues_db.close () 
stocknames_db.close ()
stockname_file.close ()

instagram story viewer