# SQLObject

SQLObject is a popular Object Relational Manager for providing an object interface to your database, with tables as classes, rows as instances, and columns as attributes.

SQLObject includes a Python-object-based query language that makes SQL more abstract, and provides substantial database independence for applications.

- Download
- Mailing list, bugs, etc.
- Related projects and articles

# Documentation

- News and updates
- Main SQLObject documentation
- Frequently Asked Questions
- sqlbuilder documentation
- select() and SelectResults
- sqlobject-admin documentation
- Inheritance
- Versioning
- Views
- Developer Guide
- Contributors

# Example

Examples are good. Examples give a feel for the aesthetic of the API, which matters to me a great deal. This is just a snippet that creates a simple class that wraps a table:

    >>> from sqlobject import *
    >>>
    >>> sqlhub.processConnection = connectionForURI('sqlite:/:memory:')
    >>>
    >>> class Person(SQLObject):
    ...     fname = StringCol()
    ...     mi = StringCol(length=1, default=None)
    ...     lname = StringCol()
    ...
    >>> Person.createTable()

SQLObject supports most database schemas that you already have, and can also issue the `CREATE` statement for you (seen in `Person.createTable()`).

Here's how you'd use the object:

    >>> p = Person(fname="John", lname="Doe")
    >>> p
    <Person 1 fname='John' mi=None lname='Doe'>
    >>> p.fname
    'John'
    >>> p.mi = 'Q'
    >>> p2 = Person.get(1)
    >>> p2
    <Person 1 fname='John' mi='Q' lname='Doe'>
    >>> p is p2
    True