Tables, Views and Sequences
The table module defines five classes, DbClass derived from DbSchemaObject, classes Sequence, Table and View derived from DbClass, and ClassDict, derived from DbObjectDict.
Database Class
Class DbClass is derived from ~pyrseas.dbobject.DbSchemaObject and represents a table, view or sequence as defined in the PostgreSQL pg_class catalog. Note: Views are not implemented yet.
Sequence
Class Sequence is derived from DbClass and represents a sequence generator. Its keylist attributes are the schema name and the sequence name.
A Sequence has the following attributes: start_value, increment_by, max_value, min_value and cache_value.
The map returned by to_map and expected as argument by diff_map has the following structure:
{'sequence seq1': {'start_value': 1, 'increment_by': 1, 'max_value': None, 'min_value': None, 'cache_value': 1 } }
Only the inner dictionary is passed to diff_map. The values are defaults so in practice an empty dictionary is also acceptable.
Table
Class Table is derived from DbClass and represents a database table. Its keylist attributes are the schema name and the table name.
The map returned by to_map and expected as argument by diff_map has a structure similar to the following:
{'table t1': {'columns': [ {'c1': {'type': 'integer', 'not_null': True}}, {'c2': {'type': 'text'}}, {'c3': {'type': 'smallint'}}, {'c4': {'type': 'date', 'default': 'now()'}} ], 'description': "this is the comment for table t1", 'primary_key': {'t1_prim_key': {'columns': ['c1', 'c2'], 'access_method': 'btree'} }, 'foreign_keys': {'t1_fgn_key1': {'columns': ['c2', 'c3'], 'references': {'table': 't2', 'columns': ['pc2', 'pc1']} }, 't1_fgn_key2': {'columns': ['c2'], 'references': {'table': 't3', 'columns': ['qc1']} } }, 'unique_constraints': {...}, 'indexes': {...} } }
The values for unique_constraints and indexes follow a pattern similar to primary_key, but there can be more than one such specification.
View
Class View is derived from DbClass and represents a database view. Its keylist attributes are the schema name and the view name.
The map returned by to_map and expected as argument by diff_map has a structure similar to the following:
{'view v1': {'definition': " SELECT ...;", 'description': "this is the comment for view v1" } }
Class Dictionary
Class ClassDict is derived from ~pyrseas.dbobject.DbObjectDict and represents the collection of tables, views and sequences in a database.