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 schapbestand een database met opgeslagen waarden, die op elk moment toegankelijk zijn.

Voorbeeldcode voor Shelve in Python

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

 importeren schappen 
database = shelve.open (bestandsnaam.suffix)
object = Object ()
database ['sleutel'] = object

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

 importeren schappen 
stockvalues_db = shelve.open ('stockvalues.db')
object_ibm = Values.ibm ()
stockvalues_db ['ibm'] = object_ibm
object_vmw = Waarden.vmw ()
stockvalues_db ['vmw'] = object_vmw
object_db = Waarden.db ()
stockvalues_db ['db'] = object_db

Er is al een "voorraadwaarden.db" geopend, u hoeft deze niet opnieuw te openen. In plaats daarvan kunt u meerdere databases tegelijk openen, naar elk willekeurig schrijven en vertrekken

instagram viewer
Python om ze te sluiten wanneer het programma eindigt. U kunt bijvoorbeeld voor elk symbool een aparte database met namen bijhouden, waarbij u het volgende aan de voorgaande code toevoegt:

 ## ervan uitgaande dat de plank al is geïmporteerd 
stocknames_db = shelve.open ('stocknames.db')
objectname_ibm = Names.ibm ()
stocknames_db ['ibm'] = objectnaam_ibm
objectname_vmw = Namen.vmw ()
stocknames_db ['vmw'] = objectnaam_vmw
objectname_db = Namen.db ()
stocknames_db ['db'] = objectnaam_db

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

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

Nadat de gegevens naar het bestand zijn geschreven, kunnen ze op elk 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 gewoon de waarde op; schappen database-bestanden worden geopend in lees-schrijfmodus. Het volgende is de basissyntaxis om dit te bereiken:

 importeren schappen 
database = shelve.open (bestandsnaam.suffix)
object = database ['sleutel']

Een voorbeeld uit het voorgaande voorbeeld zou dus luiden:

 importeren schappen 
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 eindigt). Daarom, als u een programma van een willekeurige 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 ​​plankbestand te sluiten:

 database.close () 

Als alle bovenstaande codevoorbeelden in één programma waren opgenomen, zouden we op dit moment twee databasebestanden hebben geopend en geheugen in beslag nemen. 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 ()

instagram story viewer