# 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.

## Documentation

- Download SQLObject
- SQLObject Community
- SQLObject Links
- News
- SQLObject and Python 3
- SQLObject
- SQLObject FAQ
- SQLBuilder
- SelectResults: Using Queries
- The sqlobject-admin Tool
- Inheritance
- Versioning
- Views and SQLObjects
- SQLObject Developer Guide
- Authors
- TODO

## Example

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

Queries:

    >>> p3 = Person.selectBy(lname="Doe")[0]
    >>> p3
    <Person 1 fname='John' mi='Q' lname='Doe'>
    >>> pc = Person.select(Person.q.lname=="Doe").count()
    >>> pc
    1

## Indices and tables

- Index
- Module Index
- Search Page