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
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 ()