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'>