Shelve je výkonný modul Pythonu pro vytrvalost objektů. Když poličíte objekt, musíte přiřadit klíč, podle kterého je známa hodnota objektu. Tímto způsobem se soubor shelve stává databází uložených hodnot, ke kterékoli z nich lze kdykoli přistupovat.
Ukázkový kód pro Shelve v Pythonu
Chcete-li vložit objekt, nejprve importujte modul a potom přiřaďte hodnotu objektu následujícím způsobem:
importovat polici
database = shelve.open (filename.suffix)
object = Object ()
database ['key'] = objekt
Chcete-li například udržovat databázi zásob, můžete upravit následující kód:
importovat polici
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 = Hodnoty.db ()
stockvalues_db ['db'] = object_db
"Stock value.db" je již otevřen, nemusíte jej znovu otevírat. Spíše můžete otevřít více databází najednou, zapisovat do nich libovolně a odejít Krajta zavřít je, když program skončí. Mohli byste si například ponechat samostatnou databázi jmen pro každý symbol a připojit k předchozímu kódu následující:
## za předpokladu, že je již importován
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
Všimněte si, že každá změna názvu nebo přípony databázového souboru představuje jiný soubor, a tedy jinou databázi.
Výsledkem je druhý databázový soubor obsahující dané hodnoty. Na rozdíl od většiny souborů psaných ve vlastních stylech jsou odložené databáze uložené v binární podobě.
Jakmile jsou data zapsána do souboru, lze je kdykoli vyvolat. Pokud chcete data obnovit v pozdější relaci, znovu otevřete soubor. Pokud se jedná o stejnou relaci, jednoduše vyvolejte hodnotu; police databázové soubory jsou otevřeny v režimu čtení a zápisu. Následuje základní syntaxe, jak toho dosáhnout:
importovat polici
database = shelve.open (filename.suffix)
object = database ['key']
Ukázka z předchozího příkladu by tedy čítala:
importovat polici
stockname_file = shelve.open ('stocknames.db')
stockname_ibm = stockname_file ['ibm']
stockname_db = stockname_file ['db']
Úvahy s Shelve
Je důležité si uvědomit, že databáze zůstává otevřená, dokud ji nezavřete (nebo dokud program neskončí). Proto pokud píšete program libovolné velikosti, chcete po práci s ní databázi uzavřít. Jinak celá databáze (nejen požadovaná hodnota) sedí v paměti a spotřebovává se výpočetní prostředky.
Chcete-li zavřít soubor shelve, použijte následující syntaxi:
database.close ()
Pokud by všechny výše uvedené příklady kódu byly začleněny do jednoho programu, měli bychom v tomto okamžiku otevřené dva databázové soubory a spotřebovávající paměť. Po přečtení názvů akcií v předchozím příkladu můžete každou databázi postupně zavřít takto:
stockvalues_db.close ()
stocknames_db.close ()
stockname_file.close ()