Shelve gebruiken om objecten in Python op te slaan

Shelve is een krachtige Python-module voor objectpersistentie. Wanneer u een object opslaat, moet u een sleutel toewijzen waarmee de objectwaarde bekend is. Op deze manier wordt het plankbestand een database met opgeslagen waarden, die op elk moment toegankelijk zijn.

Voorbeeldcode voor plank in Python

Om een ​​object op te schorten, importeert u eerst de module en wijst u de objectwaarde als volgt toe:

 legplank importeren
database = shelve.open (bestandsnaam.suffix)
object = Object ()
database ['key'] = object

Als u bijvoorbeeld een database met aandelen wilt bijhouden, kunt u de volgende code aanpassen:

 legplank importeren
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 = Waarden.db ()
stockvalues_db ['db'] = object_db

Een "stock values.db" is al geopend, u hoeft deze niet opnieuw te openen. In plaats daarvan kunt u meerdere databases tegelijk openen, naar elke database schrijven en Python verlaten om ze te sluiten wanneer het programma wordt beëindigd. U kunt bijvoorbeeld een afzonderlijke database met namen voor elk symbool bijhouden en het volgende toevoegen aan de vorige code:

 ervan uitgaande dat plank al is geïmporteerd
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

Merk op dat elke wijziging in de naam of het achtervoegsel van het databasebestand een ander bestand vormt en dus een andere database.

Het resultaat is een tweede databasebestand met de opgegeven waarden. In tegenstelling tot de meeste bestanden die in zelfopgemaakte indelingen zijn geschreven, worden opgeslagen databases in binaire vorm opgeslagen.

Nadat de gegevens naar het bestand zijn geschreven, kunnen deze op elk gewenst moment worden opgeroepen. Als u de gegevens in een latere sessie wilt herstellen, opent u het bestand opnieuw. Als het dezelfde sessie is, roept u eenvoudig de waarde op; Shelve-databasebestanden worden geopend in de modus lezen / schrijven. Hierna volgt de basissyntaxis om dit te bereiken:

 legplank importeren
database = shelve.open (bestandsnaam.suffix)
object = database ['key']

Dus een voorbeeld uit het vorige voorbeeld zou luiden:

 legplank importeren
stockname_file = shelve.open ('stocknames.db')
stockname_ibm = stockname_file ['ibm']
stockname_db = stockname_file ['db']

Overwegingen met Shelve

Het is belangrijk op te merken dat de database open blijft totdat u deze sluit (of totdat het programma wordt beëindigd). Daarom, als u een programma van elke grootte schrijft, wilt u de database sluiten nadat u ermee hebt gewerkt. Anders zit de hele database (niet alleen de gewenste waarde) in het geheugen en verbruikt deze computerbronnen.

Gebruik de volgende syntaxis om een ​​opslagbestand te sluiten:

 database.close () 

Als alle bovenstaande codevoorbeelden in één programma zouden zijn opgenomen, zouden er nu twee databasebestanden geopend zijn en geheugen verbruiken. Dus, nadat u de aandelennamen in het vorige voorbeeld hebt gelezen, kunt u vervolgens elke database als volgt sluiten:

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