is functionally similar for more details on orms for pythonconsult your friendly neighborhood web search engine you can also learn more about such systems by their roles in some larger web development frameworksdjangofor instancehas an orm which is another variation on this theme pyforma persistent object viewer (externalinstead of going into additional database interface details that are freely available on the webi' going to close out this by directing you to supplemental example that shows one way to combine the gui technology we met earlier in the text with the persistence techniques introduced in this this example is named pyform-- python/tkinter gui designed to let you browse and edit tables of recordstables browsed may be shelvesdbm filesin-memory dictionariesor any other object that looks and feels like dictionary records within tables browsed can be class instancessimple dictionariesstringsor any other object that can be translated to and from dictionary although this example is about guis and persistenceit also illustrates python design techniques to keep its implementation both simple and type-independentthe pyform gui is coded to expect tables to look like dictionaries of dictionaries to support variety of table and record typespyform relies on separate wrapper classes to translate tables and records to the expected protocolat the top table levelthe translation is easy--shelvesdbm filesand in-memory dictionaries all have the same key-based interface at the nested record levelthe gui is coded to assume that stored items have dictionary-like interfacetoobut classes intercept dictionary operations to make records compatible with the pyform protocol records stored as strings are converted to and from the dictionary objects on fetches and storesrecords stored as class instances are translated to and from attribute dictionaries more specialized translations can be added in new table wrapper classes the net effect is that pyform can be used to browse and edit wide variety of table typesdespite its dictionary interface expectations when pyform browses shelves and dbm filestable changes made within the gui are persistent--they are saved in the underlying files when used to browse shelve of class instancespyform essentially becomes gui frontend to simple object database that is built using standard python persistence tools to view and update shelve of objects with pyformfor examplecode like the following will sufficeimport shelve from formgui import formgui db shelve open(/data/castfile'formgui(dbmainloop( databases and persistence after initcast reopen shelve file browse existing shelve-of-dicts