TODO ---- * ``_fromDatabase`` currently doesn't support IDs that don't fit into the normal naming scheme. It should do so. You can still use ``_idName`` with ``_fromDatabase``. * More databases supported. There has been interest and some work in the progress for Oracle. IWBN to have DB2 driver. * Better transaction support -- right now you can use transactions for the database, but the object isn't transaction-aware, so non-database persistence won't be able to be rolled back. * Optimistic locking and other techniques to handle concurrency. * Profile of SQLObject performance, so that I can identify bottlenecks. * Increase hooks with FormEncode (unreleased) validation and form generation package, so SQLObject classes (read: schemas) can be published for editing more directly and easily. (First step: get Schema-generating method into sqlmeta class) * Simple method (in sqlmeta) for serializing a SQLObject instance to a dictionary -- both a dead dictionary (copy of values) and a live dictionary (setting keys changes the instance). * Automatic joins in select queries. * More kinds of joins, and more powerful join results (closer to how `select` works). * Refactor ``DBConnection`` to use parameterized queries instead of generating query strings. * Deprecate support for Python 2.2. Start using logging instead of print for debugging output. * Event system. This will effect columns; patterns like ``onUpdate`` methods and whatnot. Probably will use PyDispatcher: http://pydispatcher.sourceforge.net/ * A hierarchy of exceptions. SQLObject should translate exceptions from low-level drivers to a consistent set of high-level exceptions.