18. database
— A simple Database class¶
- class database.Database(*, data=None, key='id', record=<class 'database.Record'>)[source]¶
A class for storing data in a database-like structure.
The Database is a Dict where each key is a unique identifier string and each value is a record. A record is itself a Dict , where each key is a string (the field name) and the value can be anything.
- Parameters:
default_factory (callable, optional) – If provided, missing keys will be looked up by a call to the default_factory.
data (dict | list | str, optional) –
The Database can be initialized from a dict, a list of records or a file in a proper format.
If a dict, the Database will be directly initialized from it.
If a list, each record should have at least a key named ‘name’, holding the string identifying the record. This value should be unique in the list (or records will be overwritten). The ‘name’ value will be use as a key to store the record in the Database.
If a string, it is the name of a Database file in one of the supported formats, from where it will be read. See
read()
.If not provided, an empty database is constructed.
key (str, optional) – The field name to be used as a key, if list type data are specified.
Examples
>>> rec1 = {'id': 'john', 'first_name': 'John', 'last_name': 'Doe'} >>> rec2 = {'id': 'jane', 'first_name': 'Jane', 'last_name': 'Roe'} >>> db = Database(data=[rec1, rec2]) >>> print(db) { "john": { "id": "john", "first_name": "John", "last_name": "Doe" }, "jane": { "id": "jane", "first_name": "Jane", "last_name": "Roe" } } >>> db.write('test.json') >>> db1 = Database(data='test.json') >>> print(db1) { "john": { "id": "john", "first_name": "John", "last_name": "Doe" }, "jane": { "id": "jane", "first_name": "Jane", "last_name": "Roe" } } >>> print(type(db1['john'])) <class 'pyformex.database.Record'>
- write(filename)[source]¶
Export the Database to a file.
The file is written in .json format and contains a dict with two keys: ‘key’ and ‘records’. The key is a
- read(filename)[source]¶
Import all records from a Database file.
- Parameters:
filename (path_like) – The file holding the Database. The file should be in .json format as written by
write()
.
Examples
>>> db = Database() >>> db.read(pf.cfg['prop/matdb']) >>> print(db) { "steel": { "name": "steel", "young_modulus": 207000.0, "poisson_ratio": 0.3, "density": 7.85e-09 }, ...