Mother provides a Python ORM for PostgreSQL with strong introspection.
Mother is a Python module that hides SQL syntax and gives you a set of intelligent classes and methods that can self-adapt and understand various situations.
It could be considered as an Object Relational Mapper with strong introspection.
In fact, configuration files, tables, fields, and keys declarations are not needed.
It works with PostgreSQL and its introspective nature is based on PostgreSQL meta queries.
The Mother module offers a set of classes to handle different situations.
In particular, it's possible to represent a table with one class. Binding a table to a class is the begin of the Mother Art.
In fact, the class knows tables relationships: handling children and relations
is powerful and easy: foreign keys and relationships informations are not needed:
Mother knows them and is able to fill records with the correct values.
Moreover, the methods used to insert children and relations are auto-created
The Mother classes can be declared by the user: it's sufficient to inherit from some Mother class: so, class extensions are very easy to code.
Some extension is already provided, as the Triggers feature, but writing others plugins is simple and immediate.
The database connection is very comfortable: credentials have to be specified in a configuration file: after that, the connection is transparent.
Mother implements a connection Pool to be used in a Threaded Environemnt.
The database transactions are implemented in a particular way.
It's possible to call nested transactions, so that you don't have to worry about the nested calls to the commit or the rollback statement. This allows to handle transactions in different levels and indipendently.
Mother comes with a logger: Speaker, that supports standard output, log file (with rotation capability), syslog and SMTP.
If you are wondering if Mother has a slow computation model, the answer is no: the Mother knowledge is made once (by Mother tools) and stored to two files. Mother is fast.
What's New in This Release:
· SQL optimizations were made, so oid loading is now not needed everywhere. Note that queries will be executed with fewer controls, but faster.
· Other SQL optimizations preclude MotherBox from needing to SELECT from DB to fire triggers.
· SQL string methods are now faster and cleaner.
· Debug messages are now printed in a more friendly format.
· Some debugging was done to dbda.py.
· SQL_DEFAULT is always applied.
· Memory optimizations were made for multiple variables inside functions.
· Color wrappers were added for OKI_COL, ERR_COL, INF_COL.