for little apps, simple routers like circuits.web, bottle.py and cherry.py are great, but as soon as you add in the database layer, there's usually no reason not to use ORM. most python ORM libraries can be setup and configured with a single table in less than 10 lines (for example, a single 5 column db table). most web frameworks will allow you to snap in any ORM you want, but i've always enjoyed using framework+ORM bundles.
this leaves two main contenders, in my mind -- turbogears (old, underdeveloped, i've never used it) and pylons/django. i group pylons/django because they're structurally very similar; the main difference being their default setup. on that note, pylons follows a philosophy of "choose anything you want" and django follows a philosophy of "there, i did that for you, change it if you're unhappy". for example django, by default, is configured to use djangoORM (you can swap out for SQLAlchemy) and pylons is not configured to use anything by default (but SQLAlchemy snaps in real easy).
all that being said, django's contrib package (specifically django.contrib.admin) is so damn good, i draw wood over it. for even my smallest projects, i usually immediately start a new django app, enable the admin, and start defining my models. then, i've already got my db tables setup, user authentication enabled and functional, and a fully customizable /admin/ interface to navigate to, with virtually no code written at all.