PyDO is a ORM (Object-Relational Mapper) database access library for Python that facilitates writing a Python database access layer. PyDO attempts to be simple, flexible, extensible, and unconstraining.
PyDO was originally written by Drew Csillag in 2000, with contributions and maintainance by Jacob Smullyan and others (see ACKNOWLEDGEMENTS), and was released as part of the SkunkWeb web application server. The 2.0 series is a fairly far-reaching overhaul of the codebase undertaken by JS. (The old PyDO version is still available in SkunkWeb 3.4.0.)
The previous version of PyDO supported PostgreSQL with three different database adapters, Mysql, SapDB, Sqlite, and Oracle. The 2.0 series currently supports PostgreSQL (with the psycopg driver), Mysql, Sqlite, Oracle (with the cx_oracle driver) and MS SQLServer (with the adodbapi driver); support for other database systems is planned.
PyDO 2 has several enhancements:
- PyDO can now be used in multi-threaded or twisted-style asynchronous sitations, with or without a customizable connection pool.
- PyDO objects are now dict subclasses, but also support attribute access to fields.
- Projections -- subsets of the field list of a super-class -- are now supported by the PyDO.project() method.
- PyDO classes can now introspect into the database at runtime to obtain field information (not yet implemented for Oracle driver).
- Overall, the API has been tightened and the code restructured.
PyDO 2 requires Python 2.4 or later.
More documentation is available in the doc/ subdirectory of the PyDO distribution:
- the PyDO manual (manual.rst)
- epydoc-generated API documentation (in api/html)
Questions about PyDO can be raised on the SkunkWeb mailing list.
This library is available under either of two licenses: the GNU Public License (see COPYING) or a BSD license (see LICENSE).