SQLObject is a popular Object Relational Manager for providing an object interface to your database, with rows as instances, tables as classes and columns as attributes. SQLObject includes a Python-object-based query language that makes SQL more abstract, and provides substantial database independence for applications. 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 >>> p.fname 'John' >>> p.mi = 'Q' >>> p2 = Person.get(1) >>> p2 >>> p is p2 True What's New in This Release: [ read full changelog ] · A bug was fixed in SelectResults slicing that prevented you from slicing a slice (for example, my_results[:20][1:5]).