Shelve הוא מודול Python רב עוצמה להתמדה באובייקט. כשאתה מדף אובייקט, עליך להקצות מפתח באמצעותו ידוע ערך האובייקט. באופן זה, קובץ המדף הופך למסד נתונים של ערכים מאוחסנים, שאפשר לגשת אליו לכל אחד מהם בכל עת.
קוד לדוגמא לשליפות בפיתון
כדי לגנוז אובייקט, ייבא תחילה את המודול ואז הקצה את ערך האובייקט באופן הבא:
מדף יבוא
בסיס נתונים = shelf.open (filename.suffix)
object = object ()
בסיס נתונים ['מפתח'] = אובייקט
אם תרצה לשמור מאגר נתונים של מניות, לדוגמה, תוכל להתאים את הקוד הבא:
מדף יבוא
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" כבר נפתחים, אינך צריך לפתוח אותו שוב. במקום זאת, אתה יכול לפתוח מספר מסדי נתונים בכל פעם, לכתוב לכל אחד מהם כרצונך ולעזוב פייתון לסגור אותם כאשר התוכנית מסתיימת. אתה יכול, למשל, לשמור מסד נתונים נפרד של שמות עבור כל סמל, ולהוסיף את הקוד הבא לקוד הקודם:
## בהנחה שהמדף כבר מיובא
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
שימו לב כי כל שינוי בשם או בסיומת של קובץ בסיס הנתונים מהווה קובץ אחר ולכן מסד נתונים אחר.
התוצאה היא קובץ מסד נתונים שני המכיל את הערכים הנתונים. בניגוד לרוב הקבצים שנכתבו בפורמטים מעוצבים בעצמם, מסדי נתונים מדפים הם שמור בצורה בינארית.
לאחר כתיבת הנתונים לקובץ, ניתן לזכור אותם בכל עת. אם ברצונך לשחזר את הנתונים בפגישה מאוחרת יותר, פתח את הקובץ מחדש. אם זו אותה הפעלה, פשוט זכור את הערך; מדף קבצי מסד נתונים נפתחים במצב קריאה-כתיבה. להלן התחביר הבסיסי להשגתו:
מדף יבוא
בסיס נתונים = shelf.open (filename.suffix)
object = בסיס נתונים ['מפתח']
אז מדגם מהדוגמה הקודמת היה קורא:
מדף יבוא
stockname_file = shelve.open ('stocknames.db')
stockname_ibm = stockname_file ['ibm']
stockname_db = stockname_file ['db']
שיקולים עם שתיים
חשוב לציין כי בסיס הנתונים נשאר פתוח עד שתסגרו אותו (או עד שתוכניתו תסתיים). לכן, אם אתה כותב תוכנית בכל גודל, ברצונך לסגור את בסיס הנתונים לאחר העבודה איתו. אחרת, כל בסיס הנתונים (לא רק הערך שאתה רוצה) יושב בזיכרון וצורך משאבי מחשוב.
כדי לסגור קובץ מדף, השתמש בתחביר הבא:
database.close ()
אם כל דוגמאות הקוד שלעיל היו משולבות בתוכנית אחת, היינו שני קבצי מסד נתונים פתוחים וצורכים זיכרון בנקודה זו. אז לאחר שקראתם את שמות המניות בדוגמה הקודמת, תוכלו לסגור כל בסיס נתונים בתורו באופן הבא:
stockvalues_db.close ()
stocknames_db.close ()
stockname_file.close ()