Web.py, the brainchild of Aaron Swartz, who developed it while working at Reddit.com, describes itself as a "minimalist's framework." Web.py employs few abstraction layers. In most cases, when you build a Web application in Web.py, you operate one level away from the actual infrastructure of databases, HTTP requests, and HTML input forms. You won't find wizards or boilerplate websites in Web.py. New websites must be built from scratch.
In addition, Web.py provides no administration utility. That means, among other things, you must rely on the back-end administration tools to create the database and tables that your application will use.
Installation is simply a matter of unzipping an archive file, followed by executing a setup script. The framework has no dependencies on external packages or libraries that must be separately downloaded. Web.py includes its own Web server, but documentation warns that it is only suitable for development work. Nevertheless, the provided server has useful debug features that are automatically enabled. For example, code changes are automatically reloaded. In addition, when an error is thrown, the Web server will produce a Web page with full error tracing information. Web.py applications can be deployed to any Web server that supports WSGI. The Web.py website suggests LightTPD or Apache.
Web.py supports most of the well-known RDBMS systems, including PostgreSQL, MySQL, SQLite, Oracle, and Microsoft SQL Server. It provides a class for abstracting access to the database, but not to the extent that database entities are represented as objects. Rather, Web.py hides the details of working with different databases. Web.py creator Swartz contends that his years of working with ORMs has taught him that, once you get beyond simple applications, you "run up against some fact about databases that the ORM has tried to hide ... and you have to go back to thinking about the database directly."