Pyramid framework tips : WebHelpers html tags and Paginate

WebHelpers has many useful functions. WebHelpers html tags and paginate are very useful for Pyramid Applications.Some features are not compatible with Pyramid framework, please see documentations.

WebHelpers in Pyramid Applications: install WebHelpers with easy_install:

$ easy_install WebHelpers

In Pyramid Application in

def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
  config.add_subscriber(add_renderer_globals, BeforeRender)

In module:

  # your helpers imports
  from webhelpers.html.tags import *

In module:

def add_renderer_globals(event):
    """ add helpers """
    event['h'] = helpers

In Mako Templates:

  ## text input
  ${h.text("name",, class_ = "large", maxlength="100")}

How to use WebHelpers Paginate with SQLAlchemy?
In your controller code:

@view_config(route_name="category_list", renderer="category/list.html")
def list(request):
    """categories list """
    # db query
    dbsession = DBSession()
    query = dbsession.query(Customer)

    # paginate
    page_url = paginate.PageURL_WebOb(request)
    customers = Page(query,
                     page=int(request.params.get("page", 1)),

    return {"customers": customers}

Paginate format in Mako Templates:

<div class="pager">
  <% link_attr={"class": "btn small"} %>
  <% curpage_attr={"class": "btn primary small disabled"} %>
  <% dotdot_attr={"class": "btn small disabled"} %>
  ${customers.pager(format="$link_previous ~2~ $link_next",


I am using Bootstrap from Twitter as css framework.

Pyramid framework tips : MySQL Database settings

Installing MySQL DB-API driver on Kubuntu 11.10 in Console:

  sudo apt-get install libmysqlclient-dev
  sudo apt-get install python-dev

In virtual env of your Pyramid installation:

  $ easy_install mysql-python

For MS Windows installation details see please online book: The Definitive Guide to Pylons – James Gardner.

For SQLAlchemy in Pyramid framework in development.ini and production.ini:

  # mysql
  sqlalchemy.url = mysql://DB_USER:PASSWORD@localhost:3306/DATABASE_NAME
  sqlalchemy.pool_recycle = 3600